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较为严谨并且通用的方法:
判断指定的属性是否可列举备注:如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。propertyIsEnumerable 属性不考虑原型链中的对象。示例:
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]‘; }
相关文章推荐
- 新人报道,发个小技巧(js数组重复判断)
- JS两个数组判断
- Js判断数组中是否有重复值的三种方法
- js 判断数组中是否有重复值 去除数组中重复值
- js判断字符串是一个字符串数组中的元素
- js判断checkbox数组是否选中
- js判断某值是否存在于某一array数组中
- JS判断一个数组中是否有重复值的三种方法 .
- js 判断某个对象是否在数组中
- JS判断一个数组中是否有重复值的三种方法
- js判断对象是不是数组
- 判断js数组包是否包含某个元素
- 判断js数组包是否包含某个元素
- js--判断一个对象是否为数组
- JS判断一个数组中是否有重复值的三种方法
- 新人报道,发个小技巧(js数组重复判断)
- 判断js数组包是否包含某个元素
- js判断是否为数组的函数: isArray()
- JS判断数组类型的两种方法
- js 判断数组是否有重复元素的几种方式