阅读本篇先理解一句话,每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,实例都包含一个指向原型对象的内部指针,这句话不理解的话请翻阅本系列前面几个篇文章。
原型链的基本模式
让一个原型对象等于另一个类型的实例时,就产生了原型链
function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subproperty = false;
}
//subType的原型赋值为 SuperType的实例
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
return this.subproperty;
};
var instance = new SubType();
alert(instance.getSuperValue()); //true
SubType的原型赋值SuperType的实例后,SubType的实例便可以调用使用SuperType中的属性和函数,js中的继承就是这样实现的
如下图,instance指向SubType的原型,subType的原型又指向superType的原型
所有引用类型都继承了Object,默认原型都包含一个内部指针,指向Object.prototype