ホームページ >ウェブフロントエンド >jsチュートリアル >オブジェクトを作成および管理するために、JavaScript で「new」キーワードはどのように機能しますか?

オブジェクトを作成および管理するために、JavaScript で「new」キーワードはどのように機能しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 15:26:11366ブラウズ

How Does the `new` Keyword Work in JavaScript to Create and Manage Objects?

JavaScript の「new」キーワードを解読: その機能とユースケースを明らかにする

JavaScript は一般に非オブジェクト指向であると認識されていますが、 、「new」キーワードは、オブジェクトの作成と操作において重要な役割を果たします。その重要性を詳しく調べて、その使用法に関する基本的な疑問に答えてみましょう。

「new」キーワードとは何ですか?

「new」キーワードは、次のような多面的な目的を果たします。 JavaScript:

  1. 新しいインスタンスを作成します
  2. コンストラクター関数の「プロトタイプ」オブジェクトを、新しく作成されたオブジェクトの内部でアクセスできない [[プロトタイプ]] プロパティとして指定します。
  3. 新しく作成されたオブジェクトを「this」に割り当てます。 ' variable.
  4. 'this' が存在するたびに、新しく作成されたオブジェクトを利用してコンストラクター関数を呼び出します。
  5. コンストラクター関数が null 以外のオブジェクト参照を返さない限り、新しく作成されたオブジェクトを返します。

'new' による問題解決

「new」キーワードは、JavaScript のクラスベースの継承システムの制限に対処します。動的なプロパティと継承を通じて、プログラマーは従来の OOP メカニズムをエミュレートできます。

「new」を使用する場合と使用しない場合

次の場合は常に 'new' キーワードを使用してください。以下が必要です:

  • クラスのようなインスタンスを作成するconstruct.
  • 特定のプロパティとメソッドを使用して新しいオブジェクトを初期化します。
  • 内部 [[prototype]] プロパティを通じてコン​​ストラクター関数の「プロトタイプ」オブジェクトにアクセスします。

次の場合には 'new' の使用を避けてください:

  • として関数を呼び出したい場合プレーン関数。
  • コンストラクター関数から代替オブジェクトを返したいと考えています。
  • 内部 [[prototype]] プロパティの設定と継承されたプロパティの変更の影響を認識していません。

プロトタイプと [[プロトタイプ]] についてプロパティ

プロトタイプ チェーンは JavaScript 継承の基礎です。関数の「プロトタイプ」プロパティは、継承されたプロパティとメソッドを確立するために操作できるアクセス可能なオブジェクトを指します。逆に、[[prototype]] プロパティは、コンストラクター関数のプロトタイプを保持する内部の不変オブジェクトです。

例:

function ObjMaker() {
  this.a = 'first';
}

ObjMaker.prototype.b = 'second';

const obj1 = new ObjMaker();

console.log(obj1.a); // "first"
console.log(obj1.b); // "second"

この例では、「new」は新しい「obj1」オブジェクトを作成し、その [[prototype]] プロパティを「ObjMaker.prototype」に設定します。 「ObjMaker」関数を実行し、「obj1.a」を「first」に初期化します。 「プロトタイプ」チェーンにより、「obj1」は [[プロトタイプ]] オブジェクトから「b」プロパティを継承できます。

サブクラスとプロトタイプ チェーン

サブクラスのような構造を確立するには、サブクラス コンストラクターの 'prototype' プロパティをスーパークラスの 'prototype' オブジェクトに設定します。これによりプロトタイプのチェーンが作成され、サブクラスがスーパークラスからプロパティを継承およびオーバーライドできるようになります。

以上がオブジェクトを作成および管理するために、JavaScript で「new」キーワードはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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