原則JSでnew演算子

非常に一般的な例を見てみましょう

関数人(名){
  この .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; // ステップ
    }
}

 

おすすめ

転載: www.cnblogs.com/baby-zuji/p/11628304.html