js实现isArray
判断数组的常见方法
在JavaScript中,可以通过多种方式判断一个变量是否为数组。以下是几种常见的方法:
Array.isArray()方法
这是最推荐的标准方法,ES5引入的专门用于检测数组的方法:
const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
instanceof操作符

利用原型链检测对象是否是数组实例:
const arr = [];
console.log(arr instanceof Array); // true
constructor属性检查
通过检查对象的constructor属性:

const arr = [];
console.log(arr.constructor === Array); // true
Object.prototype.toString.call()
利用对象的toString方法返回的内部属性:
const arr = [];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true
各种方法的比较
Array.isArray()是最可靠的方法,能正确处理跨框架的情况instanceof在简单场景下有效,但在多个全局执行环境(如iframe)中可能失效constructor属性可能被修改,不够可靠toString方法兼容性好但语法略显冗长
兼容性处理
对于需要支持旧浏览器的场景,可以这样实现polyfill:
if (!Array.isArray) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
实际应用建议
现代开发中应优先使用Array.isArray(),这是最简洁、可靠的方法。对于特殊环境需要考虑兼容性时,可以使用Object.prototype.toString.call()的polyfill实现。






