判断数组的方法
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的原型链和内部属性 |