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 サイトの他の関連記事を参照してください。