JavaScript でオブジェクトを作成するメソッドには、オブジェクト リテラル、新しいコンストラクター、Object.create() などが含まれます。Object.create() メソッドは、JavaScript のプロトタイプベースの考え方を具体化する最良の方法ですか?新しいコンストラクターによって作成されたオブジェクトは、プロトタイプベースのアイデアをどのように反映するのでしょうか?オブジェクト リテラル メソッドと新しいコンストラクターの 2 つのメソッドのうち、どちらが先に登場しましたか?
PHP中文网2017-06-12 09:31:35
申し訳ありませんが、最初の質問についてはよくわかりません。調べてから追加します。
2 番目の質問:
コンストラクターを作成すると、その中に Prototype 属性があります。この属性は、コンストラクターのプロトタイプ オブジェクトを指すポインターです。
new 演算子 + コンストラクターを通じてインスタンス化されます。オブジェクトには内部 __proto__ 属性があります。 、これはプロトタイプ オブジェクトも指します
反映できるのはプロトタイプチェーンを通して変数を検索する仕組み
だと思います変数を検索するときは、インスタンス属性で検索され、見つからない場合は、プロトタイプ オブジェクト (オブジェクトの __proto__ が指すオブジェクト) から Object.prototype まで検索されます。 JavaScript のすべての関数は Object)、見つかった場合は戻り、そうでない場合は未定義を返します
3 番目の質問:
オブジェクト リテラルは操作を簡素化するために後の開発者によって導入されたため、new+ コンストラクターが最初に登場したはずです。しかも、実際に実装されましたvar obj = {};
,其实系统内部真实的执行代码是这样的var obj = new Object();
女神的闺蜜爱上我2017-06-12 09:31:35
最初の質問:
MDN に Object.create() についての説明がありますので、参照してください
https://developer.mozilla.org... (英語が難しい場合は、中国語に切り替えることができます)参照)
2 番目の質問:
new は、この言語の基礎となるメカニズムを推測することができますが、それがどのようにプロトタイプを反映しているのかについてはあえて述べません。この質問は少し奇妙です。JS オブジェクトのプロトタイプは new に反映されるのではなく、この言語におけるオブジェクトのプロトタイプチェーンメカニズムによって決定されると思います。すると、現れる現象は 上方検索メカニズムです。上記の検索メカニズム)
3 番目の質問:
リテラルを使用してオブジェクトを作成する場合、
最初に空のオブジェクト {} を作成します。
空のオブジェクトの __proto__ を Object.prototype にバインドします。オブジェクト;
作成したオブジェクトのプロパティとメソッドをこれにバインドします。
基本的には次のようになります。エラーがある場合は、指摘してください。 (私の間違いが他の人に誤解を与えないように)。