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

【JavaScript ECMAScript】Symbol::Symbol.hasInstance静的データプロパティの使い方

Symbol.hasInstance静的データプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Symbol.hasInstanceプロパティは、JavaScriptにおいて、instanceof演算子の動作をカスタマイズするための関数を保持するプロパティです。このプロパティは、Symbolオブジェクトが提供する特別なWell-known Symbolの一つとして、コンストラクター関数に設定されます。

システム開発において、instanceof演算子は、あるオブジェクトが特定のクラス(コンストラクター)のインスタンスであるかを確認するためによく利用されます。例えば、someObject instanceof MyClassという記述で、someObjectMyClassから作られたものかを調べます。

通常、このチェックはオブジェクトの内部的なプロトタイプチェーンを辿って行われますが、開発者がSymbol.hasInstanceプロパティをコンストラクター関数に定義し、独自のロジックを持つ関数を割り当てることで、このinstanceofの振る舞いを自由に制御できます。具体的には、someObject instanceof MyClassと評価される際、JavaScriptエンジンは内部的にMyClass[Symbol.hasInstance](someObject)という関数を呼び出します。この関数がtrueを返せばinstanceofの結果はtrueに、falseを返せばfalseになります。

これにより、単純なプロトタイプチェーンの確認だけでは表現できない、より柔軟なインスタンスチェックのルールを実装することが可能になり、高度なオブジェクト指向設計をサポートします。

公式リファレンス: Symbol.hasInstance

構文(syntax)

1class YourClassName {
2  static [Symbol.hasInstance](instance) {
3    // instance が YourClassName のインスタンスであるかどうかのカスタム判定ロジックをここに記述します。
4    // このメソッドは必ずブール値を返さなければなりません。
5    return false;
6  }
7}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語