instanceof演算子
instanceof演算子でオブジェクトがクラスのインスタンスであるか評価できます。
- 組み込みクラスだけでなく、自前のクラスも正しく判定できます。
- プロトタイプチェーンも辿ってくれるようです。
// クラス function Hoge() {}; function Foo() {}; Foo.prototype = new Hoge(); var a = []; stdout.innerHTML += "a is Array? " + ( a instanceof Array ? "true" : "false" ) + "<br/>"; // true stdout.innerHTML += "a is Hoge? " + ( a instanceof Hoge ? "true" : "false" ) + "<br/>"; // false stdout.innerHTML += "a is Foo? " + ( a instanceof Foo ? "true" : "false" ) + "<br/>"; // false // 自作のクラスもOK var h = new Hoge(); stdout.innerHTML += "h is Hoge? " + ( h instanceof Hoge ? "true" : "false" ) + "<br/>"; // true stdout.innerHTML += "h is Foo? " + ( h instanceof Foo ? "true" : "false" ) + "<br/>"; // false // プロトタイプチェーンもたどってくれる様子 var f = new Foo(); stdout.innerHTML += "f is Hoge? " + ( f instanceof Hoge ? "true" : "false" ) + "<br/>"; // true stdout.innerHTML += "f is Foo? " + ( f instanceof Foo ? "true" : "false" ) + "<br/>"; // true });