質問する
82 次
1 に答える
9
prototype
の元のオブジェクトをf
プレーンなオブジェクトに完全に置き換えたからです。プロパティを介して参照を保持していたのは元のprototype
オブジェクトでした。f
.constructor
オブジェクト リテラル構文を使用して作成されたオブジェクトのコンストラクターがコンストラクターになりObject
ます。
元に戻すには、手動でそこに置く必要があります。
f = function() {};
f.prototype = {};
f.prototype.constructor = f;
thing = new f;
.constructor
これにより、新しいプロトタイプ オブジェクトのプロトタイプ チェーンでプロパティがシャドウされます。
そのプロパティを削除すると、Object
再び取得されます。
delete f.prototype.constructor;
console.log(thing.constructor); // Object
于 2012-09-12T19:29:12.790 に答える