也许有人可以向我解释,为什么我不能从B的原型级覆盖方法moep。我找到了一个例子(http://stackoverflow.com/questions/11148960/javascript-prototype-method-override-not-found),如果我用B.prototype = ...覆盖这个函数,它就可以了。那么为什么我必须指定.prototype来覆盖函数?
问候 - 托马斯
A = function() {
this.moep = function() {
alert("Im in class A!");
};
};
B = function() {
};
B.prototype = new A();
B.moep = function() {
alert("Im outside!");
};
var keks = new B();
keks.moep(); // Alerts "Im in class A"
答案 0 :(得分:3)
您要分配给B.moep
,而不是B.prototype.moep
或(B
} this.moep
内。 B.moep
根本不参与原型链。
通过new <functionname>
创建对象时,对象的原型从<functionname>.prototype
设置。因此,如果您要覆盖moep
分配给由A
创建并分配给new A
的实例的B.prototype
,则需要分配给B.prototype
。< / p>