JavaScriptでインスタンスかどうかを判断するinstanceof構文の使い方

JavaScriptでオブジェクトがインスタンス化されているかを調べる

instanceof構文を利用すれば、値がオブジェクト(Class文)のインスタンスかどうかを調べることができます。

関数を定義する際、特定のインスタンスのみで処理を行うケースで役立ちます。

構文意味
値 instanceof オブジェクト値がオブジェクトのインスタンスかどうかを調べて結果を返す

サンプルコード

下記のサンプルコードでは、変数 todayに格納されている値がDataオブジェクトのインスタンスなのか、Arrayオブジェクトのインスタンスなのかを判断して、真偽値を返しています。

Output
today instanceof Date;
today instanceof Array;
Pug
div
		table.table
			tbody
				tr
					th today instanceof Date;
					td#targetText
				tr
					th today instanceof Array;
					td#targetText1
JavaScript
const targetText = document.getElementById( 'targetText' );
const targetText1 = document.getElementById( 'targetText1' );

const today = new Date(); //Dataオブジェクトのインスタンス

targetText.textContent = today instanceof Date;
targetText1.textContent = today instanceof Array;

下記のコードでは、もう少し実用的な例として、Dataオブジェクトのインスタンスの時は処理を行い、それ以外のオブジェクトの時はエラーメッセージを出力するサンプルコードも紹介します。

Output
出力結果
Pug
table.table
			tbody
				tr
					th 出力結果
					td#targetText2
JavaScript
const today2 = new Date(); //Dataオブジェクトのインスタンス
const targetText2 = document.getElementById( 'targetText2' );
function showDate(arg) {
	if ( arg instanceof Date ) {
		targetText2.textContent = `今日の日付は${arg.toLocaleDateString()}です。`;
	} else {
		targetText2.textContent = `argがDataオブジェクトのインスタンスではありません。`;
	}
}

showDate(today2);

関数showDateを作成し、その関数に渡される引数(arg)のインスタンスがDateオズジェクトのインスタンスの時だけ処理を行い、それ以外の時はエラーメッセージを出力します。

ちなみに、今回は組み込み済みのオブジェクト(DateArray)を例に説明しましたが、自分で定義した(Class構文)のインスタンスの判別もinstanceof構文で行います。

インストラクター
コメント

コメントを残す