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

【JavaScript ECMAScript】Function::Function.prototype[Symbol.hasInstance]インスタンスメソッドの使い方

Function.prototype[Symbol.hasInstance]()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Function.prototypeSymbol.hasInstanceメソッドは、JavaScriptのinstanceof演算子の動作をカスタマイズするために使用されるメソッドです。このメソッドは、コンストラクタ関数やクラスが持つ特別な機能で、Symbol.hasInstanceというWell-Known Symbolに割り当てられています。

具体的には、target instanceof constructorという式が評価される際、JavaScriptエンジンは内部的にconstructor[Symbol.hasInstance](target)というメソッドを呼び出します。このメソッドは、targetオブジェクトがconstructorのインスタンスであるとみなせるかどうかを判定し、真偽値を返します。デフォルトでは、constructorprototypeプロパティがtargetオブジェクトのプロトタイプチェーンのどこかに存在するかどうかをチェックしますが、開発者はこのメソッドをオーバーライドすることで、独自のインスタンス判定ロジックを実装できます。

例えば、特定の条件を満たすオブジェクトだけをインスタンスとみなしたり、異なるクラス階層に属するオブジェクトを特定のコンストラクタのインスタンスとして扱いたい場合などに活用できます。この機能は、特にJavaScriptフレームワークやライブラリの開発において、instanceof演算子の振る舞いを細かく制御する必要がある場合に強力なツールとなります。このメソッドを理解することは、JavaScriptのより深いオブジェクト指向の仕組みと柔軟性を学ぶ上で重要なステップです。

構文(syntax)

1Constructor[Symbol.hasInstance](object);

引数(parameters)

value

  • value: any: インスタンスであるかどうかをチェックする対象の値

戻り値(return)

Boolean

このメソッドは、指定されたオブジェクトがこの関数のインスタンスである場合に true を、そうでない場合に false を返します。

関連コンテンツ