判斷javascript數組的方法

判斷javascript數組的方法
var is_array=function(){  
  return value &&  
      typeof value==='object' &&  
      value.constructor===Array;  
}


咱們知道,javascript是一種弱類型的語言,而且,javascript中的一切實質上都是對象。那麼,在javascript中如何進行對象的類型檢查將是一個很是重要的話題。 javascript

這裏,我將介紹兩種在js中常常使用的用於類型檢測的方法。 java

 

第一種方法是使用"typeof"操做符,這種方法可能你們都知道。使用它來進行類型檢測的結果是下列六個字符串中的其中一個:"number","boolean","object","number","function","string"。不錯,使用這個操做符,絕大部分的對象類型咱們均可以檢測到,可是,這裏有一個例外:那就是在使用數組的時候。javascript自己對於數組和對象的區別是混亂的,typeof運算符報告數組和對象的類型都是"object",所以,javascript在區別數組和對象的方式上並無yield好的機制。 數組

例如:  函數

var arr=[1,2,3,4,5]  

var obj={"name":"xiaoming","sex":"nan"};  

alert(typeof arr)//返回"object"  

alert(typeof obj)//返回"object"

 

那麼,咱們該如何判別這種特殊的狀況呢? spa

這裏,即是我要講到的第二種經常使用的進行類型檢查的方式:"constructor"屬性。 code

在javascript中,任何對象都有一個constructor屬性,它引用的是用來構造該對象的原始函數。 對象

下面一段示例代碼說明了這種方式的用法: ip

 

var num=11,str="abc",obj={num:11},arr=[1,2,3];  

alert(num.constructor===Number);//true  

alert(str.constructor===String);//true  

alert(obj.constructor===Object);//true  

alert(arr.constructor===Array);//true

 

能夠看到,使用constructor時,數組返回的再也不是object,而是具備鮮明意義的Array。 字符串

下表展現了使用上述兩種方式對不一樣類型對象進行類型檢查的結果。 string

 變量                      typeof變量                       變量.construtor
{an:"object"}             object                                Object
["an","array"]            object                                Array
function(){}              function                              Function
"a string"                string                                 String
55                        number                                 Number
true                      boolean                                Boolean
new User()                object                                 User


這裏須要注意的是,typeof運算符返回的結果是一個字符串;而constructor屬性返回的結果是一個對象

相關文章
相關標籤/搜索