は、以下のコードは、オブジェクトのプロパティにアクセスすると、私は」この説明全体に複数回 を歩んでいるhttp://bonsaiden.github.com/JavaScript-Garden/Javascriptのプロトタイプ継承
function Foo() {
this.value = 42;
}
Foo.prototype = {
method: function() {}
};
function Bar() {}
// Set Bar's prototype to a new instance of Foo
Bar.prototype = new Foo();
Bar.prototype.foo = 'Hello World';
// Make sure to list Bar as the actual constructor
Bar.prototype.constructor = Bar;
から取得されたオブジェクト自己がそのプロパティを持っている場合、最初にそれをチェックし、そうでない場合は、そのオブジェクトのプロトタイプに移動してプロパティなどを探します。
しかし、私はこのホを理解するのに苦労していますが、実際には次の理由コード
var test1 = new Bar();
var test2 = new Bar();
test1.value = 24;
の行動の作品今値がtest1のオブジェクトの一部ではありませんが、それはFooのあるそのプロトタイプのプロパティですObject、プロトタイプはFoo Objectなので、Barのすべてのインスタンスはvalueプロパティを共有します。上記のコードでは、値のプロパティを24に設定することが期待されますが、代わりにtest1に 'value'という名前の新しいプロパティが作成されますそれを初期値42にプロトタイプのvalueプロパティを残して割り当てます。これは共有のようには聞こえません。 test2の値はまだ42です。Firebugコンソールのプロトタイプチェーンを見ると、test1の値プロパティは24、プロトタイプの値プロパティは42です。
これは非常に混乱していますに。このように動作する理由を理解した人はいますか? はプロパティを読み込むとき