ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の `.prototype` と `.__proto__` の違いは何ですか?

JavaScript の `.prototype` と `.__proto__` の違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 04:54:10298ブラウズ

What's the Difference Between JavaScript's `.prototype` and `.__proto__`?

.prototype と .__proto__ の違いを理解する

JavaScript の領域では、オブジェクトは継承とプロトタイプ チェーンを通じて相互作用します。この継承メカニズムで重要な役割を果たす 2 つの重要な概念は、.prototype と .__proto__ です。これらは似ていますが、これらのプロパティは異なる機能を果たします。

.prototype

.prototype は、新しいオブジェクトを作成するためのテンプレートとして機能するコンストラクター関数のプロパティです。 new を使用してコンストラクター関数をインスタンス化すると、結果として得られるオブジェクトには、コンストラクター関数の .prototype オブジェクトを指す .__proto__ プロパティが含まれます。この .__proto__ オブジェクトには、新しく作成されたオブジェクトによって継承されるプロパティとメソッドが含まれています。

.__proto__

.__proto__ は、プロトタイプ オブジェクトを参照するオブジェクトのプロパティです。オブジェクトの作成元。これにより、オブジェクトはプロトタイプで定義されたプロパティとメソッドにアクセスできるようになります。 .__proto__ は継承チェーンで重要な役割を果たし、オブジェクトが親オブジェクトからプロパティとメソッドを継承できるようにします。

主な違い

.prototype と .prototype の主な違い.__proto__ は、 role:

  • .prototype: 新しいオブジェクトの作成に使用されるテンプレートを提供します。
  • .__proto__: プロトタイプ オブジェクトを参照します。現在のオブジェクトが作成されました。

さらに、.prototype は.__proto__ はコンストラクター関数のプロパティですが、.__proto__ は個々のオブジェクトのプロパティです。

実際の例

次のコードを考えてみましょう:

function Foo(value) { this.value = value; }
Foo.prototype.getValue = function() { return this.value; };
var b = new Foo(20);
var c = new Foo(30);

この例では、.prototype は Foo コンストラクター関数に関連付けられています。これは、新しい Foo で作成されたオブジェクトによって継承できる getValue メソッドを定義します。 .__proto__ は b と c の両方のプロパティであり、Foo.prototype オブジェクトを参照します。この .__proto__ 参照を通じて、b と c は継承された getValue メソッドにアクセスできます。

結論

.prototype と .__proto__ は、JavaScript 継承における重要な概念です。 JavaScript で効果的なオブジェクト指向プログラミングを行うには、それらの異なる機能とそれらがどのように相互作用するかを理解することが重要です。

以上がJavaScript の `.prototype` と `.__proto__` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。