码迷,mamicode.com
首页 > 编程语言 > 详细

判断数组类型

时间:2016-08-17 12:01:43      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

1.在ES5中区分js的数组和对象,是比较容易,直接用Arrar.isArray()

Array.isArray([])   //true
Array.isArray({}) //false

这个属性在ie8或ie8一下是支持es5的这一属性

PS: es5的支持情况如下:

IE6是15年前的,所以不支持,IE7出来时ECMAScript5没出来,所以不支持,IE8支持一点,IE9支持更多,IE10完美支持了,IE11支持少量ECMAScript6。
http://kangax.github.io/compat-table/es5/ (ECMAScript5 test) 
http://kangax.github.io/compat-table/es6/ (ECMAScript6 test)

在ES5以前区分数组和和对象是比较困难,typeof在面对数组和对象是完全不起作用的。简单的区分就用到instanceof

[] istanceof Array  //true
({}) instanceof Array  //false

但是在浏览器有可能多个窗口或窗体(frame)存在,因此一个窗口的对象不是另外窗体的构造函数的实例。instanceof就不能作为一个可靠的检测数组的方法

解决方案是检测对象的类属性

var isArray = Function.isArray || function(o){
	return typeof o === "object" && Object.prototype.toString.call(o) === "[object Array]"; 
}

alert(Array.isArray([])) //true
alert(Array.isArray({})); //false

 

判断数组类型

标签:

原文地址:http://www.cnblogs.com/liangcheng11/p/5779209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!