ホームページ >ウェブフロントエンド >jsチュートリアル >proto と Constructor.prototype の区別: 重要な違いは何ですか?
proto と Constructor.prototype の違いを理解する
proto プロパティとconstructor.prototype は JavaScript の密接に関連した概念であり、しばしば混乱を引き起こします。この記事は、それらの区別を明確にすることを目的としています。
__proto__:
proto は、プロトタイプ オブジェクトを指す JavaScript オブジェクトの内部プロパティです。プロトタイプ オブジェクトには、そのオブジェクトのインスタンスによって継承されたプロパティとメソッドが含まれています。オブジェクトは、コンストラクター関数から proto プロパティを継承します。
この例では、newtoy.__proto__ は、次の内容を含む Gadget.prototype オブジェクトを返します。継承された 評価 プロパティ。
constructor.prototype:
関数の constructor.prototype プロパティはプロトタイプを参照します。関数のオブジェクト。 new キーワードを使用してオブジェクトが作成されると、そのコンストラクター関数のプロトタイプが新しいオブジェクトのプロトタイプになります。
この例では、newtoy.constructor.prototype が返されます。 Gadget.prototype オブジェクト。継承された 評価 プロパティがあります。
プロトタイプ チェーン:
両方 proto とconstructor.prototype は、オブジェクトがプロトタイプ オブジェクトからプロパティとメソッドを継承できるようにする JavaScript のメカニズムであるプロトタイプ チェーンに参加します。
newtoy.__proto__.constructor.prototype.constructor。 prototype.constructor.prototype は Gadget.prototype オブジェクトを返します。このオブジェクトは Function.prototype から継承され、最終的には Object.prototype で終わります。
Internet Explorer:
Internet Explorer には proto プロパティがありません。このコンテキストで null をチェックするには、hasOwnProperty() メソッドを使用して、オブジェクトに特定のプロパティが含まれているかどうかを判断できます。
例:
<code class="javascript">if (Object.hasOwnProperty("__proto__")) { // __proto__ property is available } else { // __proto__ property is not available }</code>
以上がproto と Constructor.prototype の区別: 重要な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。