判断数组的方法

1. Array.isArray()

这是最推荐的方法,因为它是ECMAScript 5.1中新增的标准方法,适用于所有现代浏览器。

let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出:true

2. instanceof

这个操作符用来检查构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。

let arr = [1, 2, 3];
console.log(arr instanceof Array); // 输出:true

3. Object.prototype.toString.call()

这是最通用的方法,适用于所有类型的对象,甚至是 null 和 undefined。

let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // 输出:[object Array]
方法描述优点缺点
Array.isArray()使用ES5.1中的标准方法检查一个对象是否为数组最准确,不会受到原型链的影响在老版本的JavaScript环境中可能不被支持
instanceof检查 Array.prototype 是否出现在对象的原型链中简单易用在处理跨iframe的对象时可能会有问题
Object.prototype.toString.call()检查对象的内部 [[Class]] 属性最通用,适用于所有类型的对象较为复杂,需要理解JavaScript的原型链和内部属性
贡献者: huxiguo