【发布时间】:2016-07-19 14:18:41
【问题描述】:
请查看 Nicholas C. Zakas 的《Professional JS for Web Developers》一书中的代码 sn-p:
function object(o){
function F(){}
F.prototype = o;
return new F();
}
function inheritPrototype(subType, superType){
var prototype = object(superType.prototype);
console.log(prototype);
prototype.constructor = subType;
subType.prototype = prototype;
}
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;
}
inheritPrototype(SubType, SuperType);
SubType.prototype.sayAge = function(){
alert(this.age);
};
在函数inheritPrototype() 中,我记录了变量原型。我看到 sayAge() 是 变量原型 的一个属性。当我将 sayAge 属性分配给对象(supertype.prototype)时,我不确定它是如何分配给原型的。此外,在我调用函数 inheritPrototype 之后,正在初始化 SubType.prototype.sayAge。所以我很困惑看到原型拥有 sayAge 作为它的属性。
https://jsfiddle.net/shettyrahul8june/ed22rrnj/
在 JSFiddle 中运行后检查开发者控制台。谢谢。
【问题讨论】:
标签: javascript oop javascript-objects