まず、ここでは期待どおりに動作例です。オブジェクトの__proto__に存在するにもかかわらず、オブジェクトのプロパティが定義されていないのはなぜですか?
let a = { foo: 10 }
let b = { bar: 20 }
a.__proto__ = b
// returns value from prototype just fine
a.bar; // 20
そしてここでは、期待通りに動作しない問題、下にある例です。どうして? a.toString
リターンundefined
は、そのプロパティを持つプロトタイプがそれに割り当てられていたが、なぜ
// "a" has no prototype when created this way
let a = Object.create(null);
// "b" has prototype and it is a JS native Object with a whole slew of its native props
let b = {};
// assign "a" a prototype
a.__proto__ = b;
// let's try
a.toString; // undefined
// but...
a.__proto__ .toString; // function toString() { [native code] }
?
aは未定義ですw iのプロトタイプ参照b。したがって、toStringは未定義の結果を返す必要があります – binariedMe