js判断对象中是否有某个key

源代码 2024-9-5 00:21:57 84 0 来自 中国
之前

obj['key'],点"."
1 .出现的bug,假如这个key的值是false,这里就会判断没有,大概value是undefined也一样

1.png
2 .可以看到这俩都不可
3 .假如对象上不存在改属性,则会返回undefined.这种方式可以判断对象的自由属性和继承属性.假如对象自身没有检测的属性,而原型链上有该属性,就会返回原型链上的属性值
如今 方法1 hasOwnProperty :实例属性

1 .返回一个布尔值,指示对象自身属性是否有指定的属性
2 .原型链上的不会被访问到,和in差异,会忽略到从原型链上继承到的属性
3 .纵然属性的值是null,undefined,只要属性存在,hasOwnProperty仍旧会返回true
4 .注意:这个方法没有被保护,也就是说方法可以自定界说一个如许的方法,来让他的返回值永远是true大概false

方法2 in方法 :实例属性,继承属性

1 .!!('work' in obj)
2 .假如指定的属性在指定的对象或其原型链中,则in 运算符返回true
1 .对象的意思就是说,数组,也是可以用的,但是看例子有非常.传入数字的话直接返回false,但是我的数组内里满是字符串范例2 .原型链的意思就是说会查抄一些方法,好比"I" in Math 返回true3 .好比length是数组的一个属性,这里可以返回是true3 .使用delete删除的属性返回false
4 .值为undefined的属性是可以的
方法3 Reflect.has()

1 .和in方法完全一样,但是第一个参数不是对象会报错
2 .这个方法更加形象

4.png
3 .原型链上的方法同样可以会返回true
方法4 obj.propertyIsEnummerable()

1 .判断指定名称的属性是否为实例属性而且是可罗列的.
2 .
总结

1 .也就是说,判断自身属性的时间用除了in的全部方法,判断继承属性使用in
2 .
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:13, Processed in 0.197674 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表