可以通过两种方式实现原型和实例的关系。第一种实现方式使用instanceof操作符,只要用这个操作符来测试实例和原型链中出现过的构造函数,结果就会返回true。
代码演示(原型链的代码实现):
function SuperType(){
this.property = true;
}
//在SuperType函数的原型链上创建实例共享方法
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subProperty = false;
}
//继承了SuperType
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function(){
return this.subProperty;
}
var instance = new SubType();
alert(instance.getSuperValue()); //true;
对上面的代码进行测试:
alert(instance instanceof Object); //true
alert(instance instanceof SuperType); //true
alert(instance instanceof SubType); //true
第二种方式是isPrototypeOf()方法。同样,只要是原型链中出现过的原型,都可以说是该原型链所派生的实例的原型,因此isPrototypeOf()方法也会返回true。
alert(Object.prototype.isPrototypeOf(instance)); // true
alert(SuperType.prototype.isPrototypeOf(instance)); // true
alert(SubType.prototype.isPrototypeOf(instance)); // true