假设你有一个构造函数ConstrA,并希望它继承自另一个名为SuperConstr的构造函数及其原型。
你能简单地做到这一点:
SuperConstr = function() {};
SuperConstr.prototype.show = function (parm) {
window.console.log(parm);
}
ConstrA = function () {
this.value = 1;
}
ConstrA.prototype = SuperConstr.prototype; // <----- Is this valid?
ConstrA.prototype.showAgain = function (parm) {
window.console.log(parm * 2);
}
obj = new ConstrA();
obj.show(obj.value); // 1
obj.showAgain(obj.value); // 2
obj现在似乎继承自ConstrA和SuperConstr,但我不确定这是否是正确的方法。
换句话说,构造函数的原型是否等于(指向)其构造函数的原型?
答案 0 :(得分:2)
它有效,但你不再有两个原型对象,只有一个。
因此,您尝试委派的任何方法都不会被委派,它们将全部存在于SuperConstr
prototype
个对象上。
对此问题的一个问题是,如果您扩展ConstrA
的原型,您实际上已经分配给SuperContr
的原型,这可能不是您的原型想。