原型
无论什么时候,只要创建里一个函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象;在prototype中会自动获得一个constructor属性,指向构造函数。
其中,person1为Person的一个实例。
-hasOwnProperty() :此方法可以用于检测一个属性是存在于实例中还是原型中。若来自实例则返回true
-in操作符: 只要通过对象就能访问到的属性,则返回true。
同时使用二者可以判断该属性是存在于对象中还是原型中。
原型链
原型链是实现继承的主要方法,基本思想是利用原型让一个引用类型去继承另一个引用类型的属性和方法,即将对象和原型连接起来构成了原型链。
function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subproperty = false;
}
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
return this.subproperty;
};
var instance = new SubType();
alert(instance.getSuperValue()); //true
在上述代码中,此句
SubType.prototype = new SuperType();
SubType继承了 SuperType,使SubType的原型不仅拥有SuperType实例所拥有的属性和方法,还有一个指向SuperType原型的指针
最终,instance 的原型指向 SubType 的原型,SubType 的原型指向 SuperType 的原型;因此,当执行 instance.getSuperValue() 语句时,会一环一环的向前搜索实例,直到找到原型链末端才会停下来。