您的位置:首页 > Web前端 > JavaScript

js判断数组

2017-01-04 10:11 211 查看
1.constructor在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的如: (a instanceof Array) //a是否Array的实例?true or false  (a.constructor == Array) // a实例所对应的构造函数是否为Array? true or false较为严谨并且通用的方法:
function isArray(object){
return object && typeof object==='object' &&
Array == object.constructor;
}
2.特性判断法以上方法均有一定的缺陷,但要相信人民大众的智慧是无所不能及的,我们可根据数组的一些特性来判断其类型
function isArray(object){
return  object && typeof object==='object' &&
typeof object.length==='number' &&
typeof object.splice==='function' &&
//判断length属性是否是可枚举的 对于数组 将得到false
!(object.propertyIsEnumerable('length'));
}
有length和splice并不一定是数组,因为可以为对象添加属性,而不能枚举length属性,才是最重要的判断因子。ps: 在这里普及下 propertyIsEnumerable 方法:
object. propertyIsEnumerable(proName)

判断指定的属性是否可列举备注:如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。propertyIsEnumerable 属性不考虑原型链中的对象。示例:
var a = new Array("apple", "banana", "cactus");
document.write(a.propertyIsEnumerable(1));
3.最简单的方法
function isArray(o) {
return Object.prototype.toString.call(o) === ‘[object Array]‘;
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: