今天在《JavaScript高级程序设计》中看到有关寄生组合式继承的代码,有点迷惑,测试的时候的结果又不是我想像的结果,望大神给予指教
这个是书上看到的代码
function SuperType(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperType.prototype.sayName = function(){
alert(this.name);
}
function SubType(name, age){
SuperType.call(this, name);
this.age = age;
}
function inheritPrototype(subType, superType){
var prototype = Object(superType.prototype);
subType.prototype = prototype;
subType.prototype.constructor = subType;
}
inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function(){
alert(this.age);
}
我通过在谷歌开发者工具里面测试,发现执行之后
SubType.prototype == SuperType.prototype //true
而且两个原型的constructor属性都指向 SubType函数
有点不理解,javascript中的原型继承是什么样子的,这样的继承方法岂不是把父“类”中的方法也给改变了??
请大神解惑,谢谢
噜噜哒
相关分类