JavaScript の typeof
演算子は、オブジェクト、配列、null に対して適用すると、すべて “object” という文字列を返します。
あるインスタンスが、特定のクラスのインスタンスであることを調べるには、instanceof
演算子を使用して判別する方法があります。
var d = new Date();
if (d instanceof Date) {
// d は Date インスタンスである
}
if (d instanceof Object) {
// d は Object インスタンスでもある
}
他には、constructor
プロパティを使用する方法があります。
constructor
プロパティは、そのオブジェクトの生成に使われたコンストラクタ関数を返します。
var d = new Date();
if ((d != null) && (d.constructor === Date)) {
// d は Date インスタンスである
}
constructor
プロパティを参照する方法では、親クラスのインスタンスであるということは判別できないので注意してください (プロトタイプチェーンを使用した継承構造を意識せず、単純にインスタンス生成時に使用されたコンストラクタ関数が参照されます)。
d != null
というチェックを先に行うことで、万が一 d
が null だったり undefined だったりした場合にもエラーにならないようにしています。instanceof
を使用する方法では、このような null チェックは必要ありません。