判断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属性返回的结果是一个对象

相关文章
相关标签/搜索