网站地图    收藏   

主页 > 前端 > javascript >

js 判断是否为数组详解

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 因为js是一种弱类型的语言,并且,javascript中的一切实质上都是对象,所以我们并不容易直接判断出对象是否为数组了,下面我来整理一下关于js 判断是否为数组的实现方法。...

判断javascript数组的方法

 

 代码如下 复制代码
var is_array=function(){ 
  return value && 
      typeof value==='object' && 
      value.constructor===Array; 
}

 我们知道,javascript是一种弱类型的语言,并且,javascript中的一切实质上都是对象。那么,在javascript中如何进行对象的类型检查将是一个非常重要的话题。
这里,我将介绍两种在js中经常使用的用于类型检测的方法。

第一种方法是使用”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"

 那么,我们该如何判别这种特殊的情况呢?

这里,便是我要讲到的第二种常用的进行类型检查的方式:”constructor”属性。

在javascript中,任何对象都有一个constructor属性,它引用的是用来构造该对象的原始函数。

下面一段示例代码说明了这种方式的用法:

 代码如下 复制代码

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。

下表展示了使用上述两种方式对不同类型对象进行类型检查的结果。

变量                      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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论