判断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
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔