检测数组的几种方法

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]';
}

 

 

posted @ 2019-08-01 21:11  雨歇微凉意  阅读(209)  评论(0)    收藏  举报