学习记录:JavaScript判断数组

本文介绍了多种在JavaScript中判断一个值是否为数组的方法,包括使用`instanceof`、`constructor`属性、原型链(proto 和 prototype)、`toString()`、`isPrototypeOf()`以及ES6提供的`isArray()`。通过对这些方法的探讨,帮助读者深入理解JavaScript中的数组检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. instanceof

MDN上的解释为:instanceof 运算符用于检测 constructor.prototype 是否存在于参数 object 的原型链上。

语法为: object (某个实例对象) instanceof constructor(某个构造函数)

let arr = [1, 3];

console.log(arr instanceof Array);   // true
// 值得注意的是:Array是Object的子类,下面也会输出true
console.log(arr instanceof Object);  // true

2. constructor

w3school上的解释为:constructor 属性返回对创建此对象的构造函数。

语法为:object.constructor

let arr = [1, 3];

console.log(arr.constructor);           // ƒ Array() { [native code] }  指向Array
console.log(arr.constructor == Array);  // true

3. proto 和 prototype

说明一下,对象独有 proto 属性,函数独有 prototype 属性,生成对象时,对象的 proto 属性指向函数的 prototype 属性。

这是通过原型链来做判断。

let arr = [1, 3];

console.log(arr.__proto__ === Array.prototype);  // true

4. toString()

MDN上的解释为:每个对象都能通过 Object.prototype.toString() 来检测对象的类型,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为 thisArg。

let arr = [1, 3];

console.log(Object.prototype.toString.call(arr));                        // "[object Array]"
console.log(Object.prototype.toString.call(arr) === "[object Array]");   // true
console.log(Object.prototype.toString.apply(arr) === "[object Array]");  // true

5.isPrototypeOf()

这里也是通过原型链来做判断,查看 Array 是否在 arr 的原型链上。

let arr = [1, 3];

console.log(Array.prototype.isPrototypeOf(arr));   // true

6. isArray()

MDN上的解释为:Array.isArray() 用于确定传递的值是否是一个数组。

这是es6提供的方法,可以看作为封装好的第四种方法 toString()。


感谢阅读,文章仅作为学习笔记记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值