首页IT科技判断一个对象是否为null(前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?)

判断一个对象是否为null(前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?)

时间2025-09-18 20:04:59分类IT科技浏览5415
导读:一、如何判断对象具有某属性? 如:let obj={name:zhangsan,age:21}...

一                、如何判断对象具有某属性?

如:let obj={name:zhangsan,age:21}

有以下方法 ( property 为属性名的变量                ,实际上是key                         ,键名):

1. property in obj

效果如图:

in 运算符

2. Reflect.has(obj, property)

效果如图:

关于 Reflect:

① 它是JS的一个内置对象        ,无构造函数                ,可以用它遍历对象的key                         ,如:Reflect.ownKeys(obj) // [name, age];

② 也可以用它给对象添加一个属性        ,如:Reflect.set(obj, hobby, [singing,reading]), 返回值是true/false, 如图:

③ 无论是自有属性还是原型上有该属性        ,Reflect.has(obj,property)方法都会返回 true                。

3. obj.hasOwnProperty(property)

可以判断是否是对象的自有属性

                         ,若有                ,返回true        ,否则返回 false(原型链上的返回false)                         。

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法        。用来检测一个对象是否含有特定的自身属性;和 in 运算符不同                         ,该方法会忽略掉那些从原型链上继承到的属性                。

4. Object.hasOwn(obj, property)

是 Object 的方法                ,也是判断自有属性的                         。

不过要注意浏览器版本兼容问题,谷歌 93 以上版本才支持        。不能贸然使用        。

MDN推荐用该方法替换掉 hasOwnProperty                         。原话是这样的:“ 建议使用此方法替代 Object.hasOwnProperty()                         ,因为它适用于使用 Object.create(null) 创建的对象以及覆盖了继承的 hasOwnProperty() 方法的对象                。尽管可以通过在外部对象上调用 Object.prototype.hasOwnProperty() 解决这些问题                         ,但是 Object.hasOwn() 更加直观        。                ”

以下是运行结果图:

5. Object.prototype.hasOwnProperty.call 方法

判断自有属性:

Object.prototype.hasOwnProperty.call(obj2,studentId)

二                         、遍历数组的方法有哪些?

for,for...in                ,for...of                         ,forEach        ,map

其中 forEach 会改变原数组                ,map 会返回一个新的数组                         ,得到的结果赋值给一个新的变量接收        ,如:

const arr=[1, 2]; const result = arr.map((item, index)=>{ return item + 1; }) // result:[2,3] arr还是[1,2]

注意:

for...in 拿到的是数组下标        ,for...of 拿到的是数组的值; for...in 能遍历对象                         ,拿到的是对象的key;for...of 不能遍历对象                ,会报错 obj is not iterable 不可迭代                         。

如果附带其他功能的遍历:

1        、reduce 2                、filter 3                         、some 4        、indexOf 5        、includes

这里博主只是单纯罗列一下                。

这些方法什么用处?可以菜鸟教程或mdn查一下        ,可以见这位同学的总结。

三                         、2023最新前端面经及行情分析

点击这里:前端面经

声明:本站所有文章                         ,如无特殊说明或标注                ,均为本站原创发布                         。任何个人或组织,在未征得本站同意时                         ,禁止复制                、盗用        、采集                         、发布本站内容到任何网站                、书籍等各类媒体平台                         。如若本站内容侵犯了原著者的合法权益                         ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
2020网络关键词(如何用关键词抓取与分析提升网站排名?) 观察者与发布订阅的区别(Google Guava 工具类(一)—— EventBus(观察者模式的实现))