0

次の 3 つの方法を試しました。結果は右側のコメントです。難しいのは、データ型と区別できないことです。どのObjectようにデータ型を取得できますArrayか?StringObject

   var arr = [];
   console.log('type of arr', typeof arr); //objct
   console.log('instanceof array', arr instanceof Array); //true
   console.log('instanceof object', arr instanceof Object);  // true
4

5 に答える 5

3

ここに1つのテクニックがあります:

> var arr = [];
> Object.prototype.toString.call(arr);
"[object Array]"

これが行うことは、渡されたものをポインターtoStringとして使用して、プロトタイプ オブジェクトのメソッドを呼び出すことです。thisこの手法の詳細については、 のリファレンスを参照してcallください。

この手法を使用して、他のオブジェクト タイプも把握できることがわかりました。

> var func = function(){}
> Object.prototype.toString.call(func);
"[object Function]"

> var obj = {};
> Object.prototype.toString.call(obj);
"[object Object]"
于 2012-06-13T05:51:19.103 に答える
3

これにはjQueryの「isArray」関数を使用できます

var arr1 =[];
alert(jQuery.isArray(arr1));  // true

var arr2 = new Array();
alert(jQuery.isArray(arr2));  // true

var obj = new Object();
alert(jQuery.isArray(obj));   // false
于 2012-06-13T05:56:02.923 に答える
0

配列は常にオブジェクトのインスタンスになります。Objectこれは JavaScript の基本オブジェクトであり、new によって作成された別のオブジェクトは継承されます。

 new String('a') instanceof Object // true - also instance of String
 new Number(3) instanceof Object // true -also instance of Number etc.
 new Boolean(true) instanceof Object // true
 new Date instanceof Object // true
 new function(){} instanceof Object // true

 [] instanceof Object // true - [] is equal to new Array

 check this out: 
 Array = 1;
 [] //TypeError: Cannot read property 'slice' of undefined
 :)

でも

'a' instanceof Object // false
 3 instanceof Object // false   

これを試して:

 var str = 'aaa',
     arr  = [],
     myClass = function(){},
     myClassInstance = new myClass;

 str.constructor == String // true
 arr.constructor == Array // true
 myClassInstance.constructor == myClass // true
于 2012-06-13T06:09:20.027 に答える
0

これは非常に簡単です。あなたの質問は確かにあなたの答えです。

var arr = [];
if('instanceof object', arr instanceof Object){
    alert('arr is a object');
    if('instanceof array', arr instanceof Array){
        alert('arr is a Array');
    }
}​else{
    alert('this is not a object');
}

それでは、単純な変数 testObj を使用してみましょう。これはオブジェクトでさえありません。配列である可能性があります。

    var testObj;
    if('instanceof object', testObj instanceof Object){
      alert('testObj is a object');
    }else{
      alert('testObj is not a object');
    }
​ 

これをもっと試してみてください

于 2012-06-13T05:55:00.333 に答える