ホームページ  >  記事  >  ウェブフロントエンド  >  「new.target」とは何ですか? ES6 クラスでどのように機能しますか?

「new.target」とは何ですか? ES6 クラスでどのように機能しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 03:52:03664ブラウズ

 What is

ECMAScript 2015 の "new.target" について

ECMAScript 2015 仕様では、キーワード "new.target" が導入され、簡単に説明されています。 3回言及しました。 MDN は何らかのコンテキストを提供しますが、やや曖昧なままです。

「new.target」とは何ですか?

「new.target」はメタ プロパティであり、別名「new.target」とも呼ばれます。新しいターゲット。 非アロー関数環境の [[NewTarget]] 内部スロットの現在の値を取得します。この値は、関数が「new」キーワードで呼び出されたときに設定されます。

「new.target」の目的

その主な目的は、を決定することです。関数がコンストラクターとして呼び出されたかどうか。さらに、これは ES6 クラスの実装において重要な役割を果たします。

ES6 クラスが "new.target" を利用する方法

ES6 クラス コンストラクターが " 経由で呼び出されるときnew X」の場合、「this」の値は初期化されません。オブジェクトはまだ作成されていません。ただし、インスタンスは最初に呼び出されたコンストラクターの .prototype を継承する必要があります。

「new.target」は、super() 呼び出し中に「new」呼び出しを受け取った「最も外側の」コンストラクターを追跡します。 OrdinaryCreateFromConstructor プロシージャは、現在実行されているコンストラクターの代わりに「new.target」を使用して、正しい継承を保証します。

例:

<code class="javascript">class Parent {
  constructor() {
    console.log(new.target); // Child!
  }
}
class Child extends Parent {
  constructor() {
    super();
    console.log(this);
  }
}

new Child;</code>

この例では、「new」 .target" は、親コンストラクター内に "Child" を出力し、それが "new" キーワードで呼び出されたことを示します。

以上が「new.target」とは何ですか? ES6 クラスでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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