Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Map::Map[Symbol.species]静的アクセサプロパティの使い方

Map[Symbol.species]静的アクセサプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Map[Symbol.species]プロパティは、Mapオブジェクトの新しいインスタンスを生成する際のコンストラクタを制御するために使用されるプロパティです。このプロパティは、主にJavaScriptのクラス継承の仕組みと関連が深く、システムエンジニアがより柔軟なオブジェクト生成を設計する際に利用されます。具体的には、Mapクラスを継承して独自のクラス(派生クラス)を作成した場合に、その派生クラスのメソッドが新たなMapのようなオブジェクトを作成する際、どのクラスのコンストラクタ(元のMapクラスか、それとも派生クラス自身か)を使うべきかを指定する役割を持っています。

Map[Symbol.species]のデフォルト値は、そのクラス自身を指します。そのため、通常はMapクラスのメソッドが新しいMapインスタンスを作成するときには、Mapクラスのコンストラクタが使われます。しかし、このプロパティを派生クラスでオーバーライドし、異なるコンストラクタ(例えば、常に基底のMapクラス)を返すように設定することで、派生クラスのインスタンスから生成される新しいオブジェクトが、常に基底のMapクラスのインスタンスとなるように強制することができます。

これは、特定の操作によってオブジェクトを生成する際に、そのオブジェクトの型を厳密に制御したい場合に非常に有用です。例えば、自作のライブラリにおいて、ユーザーがMapを継承したクラスを使っていたとしても、特定のAPIメソッドが返すオブジェクトは常に基底のMapインスタンスであることを保証したい、といった要件がある際に、このMap[Symbol.species]プロパティがその柔軟性を提供し、プログラムの予測可能性と安定性を高めるために利用されます。

公式リファレンス: Map[Symbol.species]

構文(syntax)

1Map[Symbol.species];

引数(parameters)

引数なし

引数はありません

戻り値(return)

Map

Map.prototype[Symbol.species] は、Map オブジェクトのサブクラスを作成する際に、どのクラスのインスタンスを生成すべきかを示す静的アクセサープロパティです。このプロパティは、Map コンストラクタ自身を返します。

関連コンテンツ