proto と Constructor.prototype の区別: 重要な違いは何ですか?

DDD
リリース: 2024-10-21 10:32:03
オリジナル
853 人が閲覧しました

Differentiating proto and Constructor.prototype: What's the Key Distinction?

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.prototypeGadget.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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!