クイックノート:あなたの答えの中でjavascriptの継承の基本を説明しないでください。
これは、プロトタイプメンバーにいくつかのプロパティが付加された単純なコンストラクター関数です。
function Foo() {
this.relationship = "Love";
};
Foo.prototype.name = "Natalie";
Foo.prototype.age = 22;
Foo.prototype.country = "France";
次に、Fooを使用して新しいオブジェクトを作成し、いくつかの基本をテストします。すべてがかっこいいです。
var girl = new Foo();
girl.hasOwnProperty("relationship"); //=> true
girl.hasOwnProperty("name"); //=> false
girl.relationship; //=> "Love"
girl.name; //=> "Natalie", this comes from Foo.prototype
girl.__proto__ === Foo.prototype; //=> true
girl.__proto__.name === Foo.prototype.name; //=> true
girl.name === Foo.prototype.name; //=> true
また、Foo.prototype.nameプロパティの値を更新すると、girl.nameは新しい値を指すようになります。
Foo.prototype.name = "Lucia";
girl.name; //=> "Lucia", this comes from Foo.prototype
Foo.prototypeを変更して、null、未定義、空のオブジェクトなどにすると、不思議なことが起こります。
Foo.prototype = null;
女の子のオブジェクトにFoo.prototypeへの非表示(ECMA [[Prototype]])リンクがある場合__ proto__
、Foo.prototypeをnullにした後、女の子がnameプロパティを取得する可能性はありませんが、取得できます。
girl.name; //=> "Lucia"
girl.age; //=> 22
girl.country; //=> "France"
ここで、この時点でFooを使用して別のオブジェクトを作成するとします。もちろん、Foo.prototypeはnullであるため、名前、年齢、国はありません。
var new_girl = new Foo();
new_girl.name; //=> undefined
new_girl.age; //=> undefined
new_girl.country; //=> undefined
だから私の質問は、Foo.prototypeをnullに割り当てた後、地球上で前のオブジェクト(女の子)と彼の隠されたリンクがそれらのプロパティをどのように記憶できるかということです。__ proto__