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のは、ではなくB.prototype.moep、(内Bthis.moepです。B.moepプロトタイプチェーンにはまったく関与していません。

を介してオブジェクトを作成する場合new <functionname>、オブジェクトのプロトタイプはから設定され<functionname>.prototypeます。したがって、によって作成され、に割り当てられたインスタンスにmoep割り当てられたをオーバーライドする場合は、に割り当てる必要があります。Anew AB.prototypeB.prototype

于 2012-12-06T21:56:03.753 に答える