ホームページ > ウェブフロントエンド > jsチュートリアル > 「new」演算子はバックグラウンドでどのように動作して、JavaScript でオブジェクトを作成および初期化するのでしょうか?

「new」演算子はバックグラウンドでどのように動作して、JavaScript でオブジェクトを作成および初期化するのでしょうか?

Patricia Arquette
リリース: 2024-10-29 03:21:02
オリジナル
554 人が閲覧しました

How does the `new` operator work behind the scenes to create and initialize objects in JavaScript?

新しい演算子が JavaScript でオブジェクトを作成および初期化する方法

新しい演算子は、新しいオブジェクトを作成するために使用される JavaScript の強力なキーワードです。これはオブジェクト指向プログラミングで重要な役割を果たしますが、特にプロトタイプ チェーンに関連して完全に理解するのは困難な場合があります。

新しい Operator を理解する

使用する場合関数を使用した新しい演算子の場合、次の手順が内部で発生します。

  1. 新しいネイティブ オブジェクトが作成されます。
  2. オブジェクトの内部 [[Prototype]] プロパティは、関数のプロトタイプ プロパティ。
  3. 関数は、新しく作成されたオブジェクトを this 値として使用して呼び出されます。
  4. 関数がプリミティブ値を返す場合、内部的に作成されたオブジェクトが返されます。
  5. それ以外の場合、関数がオブジェクトを返す場合、内部的に作成されたオブジェクトは破棄されます。

実装例

新しい演算子の機能を示すには、次のようにします。同等の実装を次に示します。

<code class="javascript">function NEW(f) {
  let obj, ret, proto;

  // Check if `f.prototype` is an object
  proto = f.prototype ? f.prototype : Object.prototype;

  // Create an object inheriting from `proto`
  obj = Object.create(proto);

  // Call the function with `obj` as `this`
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  // Return the object from the function or the newly created `obj`
  return Object(ret) === ret ? ret : obj;
}</code>
ログイン後にコピー

使用例

次の例を考えてみましょう。

<code class="javascript">function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

let obj = NEW(Foo, 'bar');
console.log(obj.prop); // Output: "bar"
console.log(obj.inherited); // Output: "baz"
console.log(obj instanceof Foo); // Output: true</code>
ログイン後にコピー

これは、new 演算子がオブジェクトを作成する方法を示しています。これは関数のプロトタイプを継承し、そのプロパティとメソッドへのアクセスを許可します。

以上が「new」演算子はバックグラウンドでどのように動作して、JavaScript でオブジェクトを作成および初期化するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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