js 继承原型链相关
function SuperType(){ this.property =true; } SuperType.prototype.getSuperValue = function(){ alert("I AM SuperType") return this.property; } function SubType(){ alert("I AM SubType") this.subproperty =false; } SubType.prototype = new SuperType(); //实现了继承SuperType SubType.prototype.getSubValue = function(){ return this.subproperty; } var instance = new SubType(); //先执行 alert("I AM SubType") alert(instance.getSuperValue()); //再执行 alert("I AM SuperType") 最后执行alert("true")
以上代码定义了两个类型:SuperType和SubType.每个类型分别有一个属性和一个方法。它们的区别主要是SubType继承了SuperType,而继承是通过创建SuperType的实例,并将该实例赋值给SubType.prototype实现的。实现的本质是重写SubType的原型对象,替换为SuperType的实例。这个新的原型对象不仅具有SuperType实例的所有方法和属性,而且还有一个指针指向SuperType的prototype属性。即SubType.prototype的原型指向SuperType的prototype属性。