一篇文章搞懂原型、原型链、prototype、__proto__

在上一讲中,我们简单提到过 prototype 这一抽象化概念,那么在本讲中,我们来具体看一下到底什么是prototype原型,什么是原型链以及大家经常会遇到的问题之prototype/__proto__区别......blablaba

首先,需要大家明确一个概念 :

任意一个函数(包括构造函数)都有一个prototype属性,指向该函数的原型对象
任意一个构造函数实例化的对象,都有一个__proto__属性,指向构造函数的原型对象。
 
换言之:
每个构造函数(constructor)都有一个原型对象(prototype),
原型对象都包含一个指向构造函数的指针,
而实例(instance)都包含一个指向原型对象的内部指针.
 
看到这里,是不是有那么一点点绕~~ 下面上代码:
 
----------------------------------------------------------    一条分割线,千军万马来相见  (#_ #)  ---------------------------------------------------------
 
function Father(){
    this.property = true;
}
Father.prototype.getFatherValue = function(){
    return this.property;
}
function Son(){
    this.sonProperty = false;
}
// //继承 Father
Son.prototype = new Father();//Son.prototype被重写,导致Son.prototype.constructor也一同被重写
Son.prototype.getSonVaule = function(){
    return this.sonProperty;
}
var instance = new Son();
alert(instance.getFatherValue());//true

猜你喜欢

转载自www.cnblogs.com/edwardwzw/p/11666349.html