0

也许有人可以向我解释,为什么我不能从 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"
4

1 回答 1

3

您分配给B.moep, not B.prototype.moepor (within B) this.moepB.moep根本不参与原型链。

当您通过 创建对象时new <functionname>,对象的原型是从 设置的<functionname>.prototype。所以如果你想将moepassigned by覆盖到由创建并分配给A的实例,你需要分配给。new AB.prototypeB.prototype

于 2012-12-06T21:56:03.753 回答