新しいコンストラクタ()の実行順序
1. OBJとして示さヒープメモリ内のオブジェクト、
__proto__プロパティとOBJ点コンストラクタ.prototype追加2.
3.この点がobjコンストラクタ
4.設定を実行します関数ステートメント
コンストラクタは、この値を返さない場合は実質的reutrnまたはタイプ(数、文字列、ブール値、ヌル、OBJメモリヒープアドレスが返されている;もし参照型戻り、この基準の戻り値型
パロディ新しい動作
関数ピープル(名前、年齢、電話番号){ この .nameの= 名前; この .age = 年齢; このドットフォン= 電話; // そこには`コンストラクタではない、または実質的にreutrnまたは(数、文字列、ブールof`この型を返す場合、ヌルの値、不定)は、次いで、スタックにおけるOBJメモリアドレスを返し、参照型`戻った場合は、この参照型の戻り値 // 戻りNULL; //全く影響 // リターン{}; //戻りこのオブジェクト // 復帰機能(){}; //この関数が返す } 関数_new(...引数){ LETコンストラクタ =引数[0]; // コンストラクタは取得 (constructor.prototype)OBJ = Object.createを聞かせ; // プロトタイプのプロトタイプのコンストラクタに空のオブジェクトとポイントを作成します RES = constructor.call(OBJ、... args.slice(1))しましょう。// コール强行将この指向第一个参数 場合((typeof演算 RES === 'オブジェクト' || typeof演算のres === '関数')&& RES =!ヌル){ リターンのres; } 他{ 戻りOBJ。 } } Aせ = _new(人、 'AA'、20、132456 )。 ナましょう = 新しい人々 ( 'AA'、20、132456 ); console.log(NA)。 // 运行结果 人々 {名: 'AA'、年齢:20、電話:132456 } 人々 {名: 'AA'、年齢:20、電話:
----------------
免責事項:この記事はCSDNブロガーのオリジナルの記事で「拡散まばらな狂った」、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースと、このリンクを添付してくださいです声明。
オリジナルリンクします。https://blog.csdn.net/lyt_angularjs/article/details/86623988