【JavaScript ECMAScript】new.target言語機能の使い方
new.target言語機能の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
new.targetプロパティは、new演算子を使ってコンストラクタ関数やクラスが呼び出された際に、その呼び出し元のコンストラクタ関数またはクラス自身を保持するプロパティです。このプロパティは、クラスのコンストラクタや関数コンストラクタの内部でのみ利用できます。
具体的には、newキーワードを用いてクラスや関数がインスタンス化されると、new.targetには、そのインスタンス生成のターゲットとなったコンストラクタ関数やクラスへの参照が格納されます。一方、newキーワードを使わずに通常の関数として呼び出された場合には、new.targetはundefinedを保持します。
この機能の主な用途は、クラスの継承関係において、現在のコンストラクタが直接インスタンス化されたものなのか、それともサブクラスによって継承され呼び出されたものなのかを判断する際に役立ちます。例えば、特定のクラスが直接インスタンス化されることを防ぎたい「抽象クラス」のような振る舞いを実装する場合に活用されます。new.targetが現在のクラス自身と異なる場合、それはサブクラスとして呼び出されたと判断できるため、より柔軟で堅牢なクラス設計が可能になります。これにより、JavaScriptにおけるオブジェクト指向プログラミングの表現力を高める重要な言語機能の一つです。
公式リファレンス: new.target
構文(syntax)
1class ParentClass { 2 constructor() { 3 console.log(new.target.name); 4 } 5} 6 7class ChildClass extends ParentClass { 8 constructor() { 9 super(); 10 } 11} 12 13new ChildClass();
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません