检测数组的方法

instanceof操做符
if(value instanceof Array){}
复制代码

其实就是判断是否是Array对象的实例,那就会有问题:javascript

  1. 若是存在两个以上不一样的全局执行环境,就会出现两个以上不一样的Array构造函数。
  2. 若是从一个全局环境建立出来的数组放到另外一个全局环境中判断,那该数组天然就不是当前全局环境下Array构造函数的实例了。
  3. 好比iframe内嵌网页,向内嵌网页传入对象判断。
Array is Array()
if(Array is Array(value)){}
复制代码

ECMAScript5新增了Array is Array()方法,这个方法最终的目的就是判断是否是数组,不会考虑在哪一个全局环境。java

Object.prototype.toString.call()
Object.prototype.toString.call(value) //若是value是数组就会返回"[object Array]"
复制代码

有时候,咱们是要判断对象或变量是什么类型,并不知道是否是数组,因此不会用以上两种。而是要用上面这一种。数组

由于在任何值上面调用Object的toString方法都会返回一个[Object NativeConstructorName]格式的字符串(与全局做用域无关,返回的值能保持一致),每一个类都有一个[class]属性,这个属性值就是构造函数名。函数

相关文章
相关标签/搜索