0

関数に入れる変数の型を知りたいです。だから、私はこれを使用typeofして気に入りました:

randomFunctionName: function(obj){
    switch(typeof obj){
        case "object":
           //Something
        case "text":
            //Something else
    }
}

objしかし問題は、が配列なのかオブジェクトなのか分からないことです。

typeof [] === "object"  //true
typeof {} === "object"  //true

では、どうすればそれらを分離できますか?それらの間に違いはありますか?

4

4 に答える 4

6

配列はオブジェクトです。次のようにして、オブジェクトが配列であるかどうかをテストできます。

Object.prototype.toString.apply(value) === '[object Array]';

これを次のように関数にまとめることができます。

function isArray(a)
{
    return Object.prototype.toString.apply(a) === '[object Array]';
}
于 2012-04-29T00:13:39.423 に答える
3

コンストラクターを確認してください。

[].constructor == Array  //true
{}.constructor == Object  //true
于 2012-04-29T00:14:00.720 に答える
0

これはとても簡単です。次のようなものを試してください

var to = {}.toString;
alert(to.call([])); //[object Array]
alert(to.call({})); //[object Object]
于 2012-04-29T00:12:30.713 に答える