【JavaScript ECMAScript】Symbol::Symbol.hasInstance静的データプロパティの使い方
Symbol.hasInstance静的データプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Symbol.hasInstanceプロパティは、JavaScriptにおいて、instanceof演算子の動作をカスタマイズするための関数を保持するプロパティです。このプロパティは、Symbolオブジェクトが提供する特別なWell-known Symbolの一つとして、コンストラクター関数に設定されます。
システム開発において、instanceof演算子は、あるオブジェクトが特定のクラス(コンストラクター)のインスタンスであるかを確認するためによく利用されます。例えば、someObject instanceof MyClassという記述で、someObjectがMyClassから作られたものかを調べます。
通常、このチェックはオブジェクトの内部的なプロトタイプチェーンを辿って行われますが、開発者がSymbol.hasInstanceプロパティをコンストラクター関数に定義し、独自のロジックを持つ関数を割り当てることで、このinstanceofの振る舞いを自由に制御できます。具体的には、someObject instanceof MyClassと評価される際、JavaScriptエンジンは内部的にMyClass[Symbol.hasInstance](someObject)という関数を呼び出します。この関数がtrueを返せばinstanceofの結果はtrueに、falseを返せばfalseになります。
これにより、単純なプロトタイプチェーンの確認だけでは表現できない、より柔軟なインスタンスチェックのルールを実装することが可能になり、高度なオブジェクト指向設計をサポートします。
構文(syntax)
1class YourClassName { 2 static [Symbol.hasInstance](instance) { 3 // instance が YourClassName のインスタンスであるかどうかのカスタム判定ロジックをここに記述します。 4 // このメソッドは必ずブール値を返さなければなりません。 5 return false; 6 } 7}
引数(parameters)
引数なし
引数はありません
戻り値(return)
戻り値なし
戻り値はありません