判断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
创造与魔法 安卓版v1.0.0750
创造与魔法是一款开放世界手游,在游戏中玩家可探索这个奇妙的世
创造与魔法修改版 最新版v1.0.0750
创造与魔法无限点券版是款探索冒险游戏,该款游戏的操作还是蛮自
战争与文明官方版本 安卓版v1.7.16
战争与文明是一款由上海邮通科技有限公司开发的战争策略游戏,这
迷你世界0元领皮肤无限迷你币版 最新安卓版v1.43.0
迷你世界0元购买皮肤版是这款开放沙盒冒险建造游戏的特殊破解版
创造与魔法无限经验版 安卓版v1.0.0750
创造与魔法无限经验版是款可以改造环境,整个游戏的自由度还是蛮