私は、プロトタイプの継承を実現するために、従来の js の方法の代わりに object.create を使用することにかなり慣れていません。
少なくとも Chrome では、次のコードを見て驚きました。
var baseObject = {
test : function(){
console.log('Child');
}
}
var newObject = Object.create(baseObject);
newObject.test = function(){
console.log('Parent');
this.__proto__.test();
}
console.log(newObject);
newObject.test();
これを生成します (Web ツールで出力をシミュレートします):
Object {test: function, test: function}
test: function (){
__proto__: Object
test: function (){
__proto__: Object
Parent
Child
したがって、prototype を設定するのではなく、代わりに "__proto__" のみを設定していることがわかります。私のコードでは、適切に継承して親オブジェクトを呼び出すことができますが、「__proto__」のみを使用していることがわかります。"prototype" を使用すると、エラー (未定義) が発生します。
何が起きてる?object.create は、それが標準であるため、代わりに「プロトタイプ」を設定すると考えました(または、私が想定していた)。「__proto__」を使用して入力するのはなぜですか