1
次の結果について説明してください(Firefox 3.6でテスト済み)。 "this"が明らかにB型の場合、this.constructorはAプロトタイプをどのように指していますか? 、JavaScript '継承':コンストラクタのプロパティが正しくありません
A=function() {}
A.prototype.copy=function() {
return new this.constructor();
}
B=function() {}
B.prototype=new A();
var b=new B();
var bcopy=b.copy();
var cond1=bcopy.constructor==B // false
var cond2=bcopy.constructor==A // true
しかし、なぜb.constructor == Aですか?それをAとするのは誰ですか? – shurik
'.prototype = new A();'を指定すると '.constructor'プロパティが' A'を指し示すオブジェクトが得られます。 「B」から作成されたすべての「インスタンス」が検索され、こう言われました。「あなたは私のコンストラクタがAだと言ったので、尋ねるたびにレポートします」_正しい値に戻す必要があります。あなたはそれを殴った。 – Phrogz
次のことが真であることを確認してください。最初は、すべての関数にプロトタイププロパティがあります。このプロパティは、コンストラクタメソッドというオブジェクトを1つだけ持つオブジェクトを指します。だから、コンストラクタのプロパティは常にプロトタイプから来ます。プロトタイプを再定義すると、コンストラクターを初期値に戻す必要があります。 – shurik