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

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

时间2025-06-17 09:32:30分类IT科技浏览4354
导读:一、如何判断对象具有某属性? 如: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
面向对象与面向过程的区别是什么?(面向对象与面向过程) 热血江湖喜庆贺岁烟花套餐(热血江湖私服烟雨江湖)