JS で変数の型を取得するより良い方法はありますかtypeof
? 次のようにするとうまく動作します:
> typeof 1
"number"
> typeof "hello"
"string"
しかし、試してみると無駄になります:
> typeof [1,2]
"object"
>r = new RegExp(/./)
/./
> typeof r
"function"
は知っていますinstanceof
が、これには事前にタイプを知っておく必要があります。
> [1,2] instanceof Array
true
> r instanceof RegExp
true
もっと良い方法はあるでしょうか?
ベストアンサー1
アンガス・クロールは最近、これについて興味深いブログ記事を書きました -
http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/
彼はさまざまな方法の長所と短所を検討し、新しい方法「toType」を定義します。
var toType = function(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}