检测数组的几种方法
1、instanceof: 用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
var arr = []; console.log(arr instanceof Array); // true
2、constructor
var arr = []; console.log(arr.constructor === Array); // true
实际上,instanceof操作符在只有一个全局环境时没有问题,当存在多个框架时,即存在多个全局执行环境会出现多个版本的Array构造函数。
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); otherArray = window.frames[window.frames.length - 1].Array; var arr = new otherArray([]); console.log(arr instanceof Array); // false
3、为了解决instanceof的不足,ES5新增了方法Array.isArray(),该方法存在浏览器兼容性问题。
var arr = []; console.log(Array.isArray(arr)); // true
4、利用Object原生的toString()方法
function isArray (value) { return Object.prototype.toString.call(value) == '[object Array]'; }