非常に一般的な例を見てみましょう
関数人(名){
この .nameの= 名前。
}
Person.prototype.say = 関数(){
console.log(この.nameの);
}
P LET = 新しい新しい人(「花」);
p.say(); // フラワー
なぜ「花」をプリントアウト?なぜオブジェクトにこのポイントのコンストラクタはありますか?
これは原則としての新しい役割です。
図1に示すように、クラスのインスタンスを作成する:次にOBJ __proto__ Person.prototypeにこのオブジェクトを設定し、空のオブジェクトobjを作成し、つまり、新しいオブジェクトを作成Person.prototypeから継承
図2に示すように、コンストラクタが実行される。実行されると、それぞれのパラメータが渡され、これは、ステップ1で作成された新しいインスタンスが割り当てられます。
図3に示すように、返されたオブジェクト:コンストラクタは、新しいオブジェクトを返す場合、新しいオブジェクトは、新しいから返された実施例1の手順に置換されています。コンストラクタは、オブジェクトを返さない場合は、新しい結果は、ステップ1で作成したオブジェクトとして出てきます
新しい実現
機能新しい(人){
VARの OBJ = { '__proto__':Person.prototype}。 // 第一步
戻り 関数(){
Person.apply(OBJ、引数); // ステップ
リターン OBJ; // ステップ
}
}