js实现isArray
JavaScript 实现 isArray 方法
在 JavaScript 中,有多种方法可以判断一个变量是否为数组。以下是几种常见的实现方式:
使用 Array.isArray()
这是最推荐的方式,因为它是 ECMAScript 5 标准提供的方法,专门用于检测数组。
const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
使用 instanceof 操作符
instanceof 操作符可以检查对象的原型链中是否存在 Array 构造函数。
const arr = [1, 2, 3];
console.log(arr instanceof Array); // true
需要注意的是,这种方式在多框架环境中可能不可靠,因为不同框架可能有不同的全局执行环境。
使用 Object.prototype.toString.call()
通过调用 Object.prototype.toString 方法并检查返回的字符串,可以判断对象的类型。
const arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true
这种方法在所有环境中都可靠,包括多框架环境。
使用 constructor 属性
检查对象的 constructor 属性是否为 Array。
const arr = [1, 2, 3];
console.log(arr.constructor === Array); // true
这种方式在多框架环境中也可能不可靠,原因与 instanceof 类似。
自定义 isArray 函数
如果需要兼容旧版浏览器(如 IE8 及以下),可以结合多种方法实现一个自定义的 isArray 函数。

function isArray(obj) {
if (Array.isArray) {
return Array.isArray(obj);
}
return Object.prototype.toString.call(obj) === '[object Array]';
}
const arr = [1, 2, 3];
console.log(isArray(arr)); // true
注意事项
- 避免使用
typeof操作符检测数组,因为typeof []返回'object',无法区分数组和其他对象。 - 在多框架环境中,
instanceof和constructor可能不可靠,推荐使用Array.isArray或Object.prototype.toString.call。






