判断数组的方法有哪些?手写一个 instanceof万法 JS
时间: 2024-10-08 07:10:18 浏览: 25
在JavaScript中,判断数组的方法主要有以下几种:
1. `Array.isArray()`:这是最直接、最官方的方法,用于检查一个值是否是数组。例如:
```javascript
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出 true
```
2. `constructor` 属性:每个JavaScript对象都有一个内部属性 `[[Class]]` 或 `constructor`,可以用来检测对象的构造函数。例如:
```javascript
function isArray(obj) {
return obj.constructor === Array;
}
```
注意,这种方法不总是可靠,因为自定义对象可能会覆盖 `Array.prototype`。
3. 使用 `Object.prototype.toString.call()`:这是一种更通用的方法,它会返回一个表示该对象类型的字符串,对于数组来说,通常是 "[object Array]"。例如:
```javascript
function isArrayByConstructor(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
```
4. instanceof 操作符:虽然你提到 "instanceof" 是一种检查继承关系的方式,但它并不是专门用于判断数组,而是用于确认某个对象是否是由特定构造函数创建的实例。如:
```javascript
if (obj instanceof Array) {
// 对象是数组
}
```
但是 `instanceof` 无法跨窗口或跨框架工作,如果数组是在其他源文件或iframe中定义的,它将返回 false。
阅读全文