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

JavaScript の「this」と「prototype」の違いは何ですか?

Patricia Arquette
リリース: 2025-01-05 17:58:39
オリジナル
867 人が閲覧しました

What's the Difference Between `this` and `prototype` in JavaScript?

JavaScript における「プロトタイプ」と「これ」の微妙な違いを理解する

はじめに

JavaScript プログラミングの分野では、「プロトタイプ」という用語が使用されます。 ' と 'this' はオブジェクト指向開発において重要な役割を果たします。ただし、それらの独特の動作は混乱を引き起こす可能性があります。この記事は、これらの概念の違いを明らかにし、その使用法を包括的に理解することを目的としています。

'プロトタイプ' と 'this'

'this'

「this」は、関数が呼び出される現在のコンテキストを参照する特別なキーワードです。これにより、オブジェクトのインスタンス プロパティとメソッドへのアクセスが提供されます。関数が 'new' 演算子なしで呼び出された場合、'this' はデフォルトでグローバル オブジェクト (ブラウザ環境のウィンドウ) になります。

'prototype'

'prototype' はプロパティです関数の複数のインスタンス間でプロパティとメソッドを共有する方法を提供する関数。関数の各インスタンスは、非表示の [[Prototype]] プロパティを介してプロトタイプのプロパティとメソッドにアクセスできます。

シナリオ例

シナリオ 1:

関数上で直接メソッドを定義する:

var A = function () {
    this.x = function () {
        // Do something
    };
};
ログイン後にコピー

この例ではこのシナリオでは、「this」のデフォルトがグローバル オブジェクトであるため、式 'this.x()' は 'window.x()' を参照します。

シナリオ 2:

プロトタイプでのメソッドの定義:

var A = function () { };
A.prototype.x = function () {
    // Do something
};
ログイン後にコピー

ここでは、「x()」メソッドがプロトタイプ オブジェクト ('A.prototype')。これにより、'A' のすべてのインスタンスが 'x()' メソッドにアクセスできるようになります。

補足

  • コンストラクターは、'new' 演算子を使用して関数のインスタンスを作成します。関数が「new」で呼び出される場合、「this」は新しいオブジェクトにバインドされます。
  • オブジェクトを JSON にシリアル化すると、プロトタイプで定義されたプロパティではなく、独自のプロパティのみが含まれます。

関連する質問

  • JavaScript のプロトタイプとは何ですか性質?
  • JavaScript では「this」キーワードはどのように動作しますか?
  • JavaScript における関数のスコープは何ですか?

メモリに関する考慮事項

「プロトタイプ」を使用してメソッドを共有しても、必ずしも大幅なメモリの節約につながるわけではないことに注意してください。ただし、一般に、各インスタンスがメソッドの独自のコピーを持つ場合と比較して、メモリ消費量が削減されます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート