方法としては下記の三つがあるようです。
それぞれ気になったところをメモっておきます。
typeof演算子
戻り値を調べてみた。
オペランド | 戻り値 |
---|---|
数値 | number |
文字列 | string |
論理値 | boolean |
オブジェクト | object |
配列 | object |
null | object |
配列とnullが意外。
instanceof演算子
プロトタイプチェーンも辿ってくれるらしい。
function Hoge(){}; function Foo(){}; Foo.prototype = new Hoge(); var foo = new Foo(); alert(foo instanceof Hoge); // true
constructorプロパティ
constructorプロパティは、コンストラクタ関数を参照します。
function Hoge() {}; var hoge = new Hoge; alert(hoge.constructor == Hoge) // true
継承(prototypeオブジェクトに親のインスタンスを入れる)すると、親のコンストラクタ関数になります。
function Hoge() {}; function Foo(){}; Foo.prototype = new Hoge(); var foo = new Foo; alert(foo.constructor == Foo) // false alert(foo.constructor == Hoge) // true
感想
- オペランドを調べるときはtypeof
- オブジェクトを調べるときはinstanceof
- constructorプロパティはいまいち使いどころがわからない