判断是否是数组的几种方法
2016-07-19 16:21
555 查看
判断objectName是否是数组
1、2判断有误差。
a)在不同 iframe 中创建的 Array 并不共享 prototype
b)即使为true,也有可能不是数组。
function SubArray(){
}
SubArray.prototype = [];
myArray = new SubArray;
alert(myArray instanceof Array)
b)splice
c)length不可枚举
有length和splice并不一定是数组,因为可以为对象添加属性,而不能枚举length属性,才是最重要的判断因子。
Object.prototype.toString.call(objectName) === ‘[object Array]‘;
1、objectName instanceof Array
2、objectName.constructor == Array
基本数据类型也可以使用此方法。(123).constructor == Number // true
1、2判断有误差。
a)在不同 iframe 中创建的 Array 并不共享 prototype
b)即使为true,也有可能不是数组。
function SubArray(){
}
SubArray.prototype = [];
myArray = new SubArray;
alert(myArray instanceof Array)
3、特性判断
a)lengthb)splice
c)length不可枚举
function isArray(object){ return object && typeof object==='object' && typeof object.length==='number' && typeof object.splice==='function' && //判断length属性是否是可枚举的 对于数组 将得到false !(object.propertyIsEnumerable('length')); }
有length和splice并不一定是数组,因为可以为对象添加属性,而不能枚举length属性,才是最重要的判断因子。
4、Array.isArray(objectName);
ES5方法5、Object.prototype.toString.call(objectName)
获取this对象的[[Class]]属性的值.[Class]]是一个内部属性,所有的对象都拥有该属性. 表明该对象的类型Object.prototype.toString.call(objectName) === ‘[object Array]‘;
相关文章推荐
- jstack命令(Java Stack Trace)
- iOS开发网络数据之AFNetworking使用
- 【BZOJ1036】[ZJOI2008]树的统计Count
- jenkins 入门教程(上)
- python 读写CSV文件
- 电子设计竞赛前的点点滴滴
- CC2540/CC2541/CC254x之可变参数串口打印配置
- ecshop数据库操作函数
- Android下的MultDex
- 关于新开岭电站球阀漏油问题处理过程的总结
- lazarus实现dbgrid中的lookup字段好简单,随便点几下就实现了
- HDOJ 1070 Milk
- 关于Mysql5.6半同步主从复制的开启方法
- ubuntu系统安装arduino流程
- html常见标签及选择符优先级
- CC2540/CC2541/CC254x之硬件抽象层
- Android input上报*、#键值笔记
- Quartz教程六:CronTrigger
- 11.jvm之访问控制器
- 汉诺塔问题