Javascript 変数の型を取得するより良い方法は? 質問する

Javascript 変数の型を取得するより良い方法は? 質問する

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()
}

おすすめ記事