JS中,如何检查对象是否为数组?,前端高级工程师面试实战

本文介绍了JavaScript中判断变量是否为数组的四种方法:Array.isArray()函数、利用对象的constructor属性、instanceof运算符以及Object.prototype.call()。作者还分享了个人经验,提供前端开发学习资源链接。
摘要由CSDN通过智能技术生成

使用 Array.isArray() 方法


顾名思义,此方法可用于识别给定参数是否为数组,它返回一个布尔值(true/false)和结果。

例如,使用以下变量,Array.isArray()方法可以正确判断是否为数组:

let result = { subject: “Science”, marks: 97 }; // Object

let numbers = [1, 2, 3, 4, 5]; // Array

let name = “Mark”; // String

let names = new Array(“Jill”, “Jane”, “Jacqueline”);

console.log(Array.isArray(result)); // false

console.log(Array.isArray(numbers)); // true

console.log(Array.isArray(name)); // false

console.log(Array.isArray(names)); // true

使用对象的构造函数属性


每个对象都有一个constructor 属性(除了使用object.create(null)创建的对象,这种情况不太可能出现)。我们可以直接将constructor 属性与 JS 的构造函数进行比较。因此,如果我们将它与数组构造函数进行比较,就会知道它是否是数组。

注意:构造函数是用来初始化对象的函数。如果使用new关键字创建了一个对象,那么使用的是构造函数。例如,在let myArray = new Array(1,2)中,使用的构造函数是Array()

可以使用constructor 属性来确定变量是否是数组:

let result = { subject: “Science”, marks: 97 };

let numbers = [1, 2, 3, 4, 5];

let name = “Mark”;

let names = new Array(“小智”, “小力”, “小吴”);

console.log(result.constructor === Array); // false

console.log(numbers.constructor === Array); // true

console.log(name.constructor === Array); // false

console.log(names.constructor === Array); // true

使用 instanceof 运算符


instanceof运算符检查是否在对象的原型链中找到构造函数。

typeof运算符一样,它返回布尔值。 要确定变量是否为数组,可以使用instanceof,如下所示:

let result = { subject: “Science”, marks: 97 };

let numbers = [1, 2, 3, 4, 5];

let name = “Mark”;

let names = new Array(“小智”, “小力”, “小吴”);

console.log(result instanceof Array); // false

console.log(numbers instanceof Array); // true

console.log(name instanceof Array); // false

console.log(names instanceof Array); // true

使用 Object.prototype.call() 方法


JS 中的所有对象均从主原型对象继承属性,该对象命名为Object.prototypeObject.prototype中存在toString()方法,这是每个对象都有自己的toString()方法的原因, Object.prototypetoString()方法显示对象的类型。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-V9T9YUFf-1710883347781)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>