美文网首页
js判断对象中是否有某个key

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

作者: skoll | 来源:发表于2022-06-15 16:07 被阅读0次

    之前

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


    image.png

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

    现在 方法1 hasOwnProperty :实例属性

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


    image.png

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

    1 .!!('work' in obj)
    2 .如果指定的属性在指定的对象或其原型链中,则in 运算符返回true

    1 .对象的意思就是说,数组,也是可以用的,但是看例子有异常.传入数字的话直接返回false,但是我的数组里面全是字符串类型
    2 .原型链的意思就是说会检查一些方法,比如"PI" in Math 返回true
    3 .比如length是数组的一个属性,这里可以返回是true
    
    image.png

    3 .使用delete删除的属性返回false
    4 .值为undefined的属性是可以的

    方法3 Reflect.has()

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


    image.png

    3 .原型链上的方法同样可以会返回true

    方法4 obj.propertyIsEnummerable()

    1 .判断指定名称的属性是否为实例属性并且是可枚举的.
    2 .

    总结

    1 .也就是说,判断自身属性的时候用除了in的所有方法,判断继承属性使用in
    2 .

    相关文章

      网友评论

          本文标题:js判断对象中是否有某个key

          本文链接:https://www.haomeiwen.com/subject/khyxvrtx.html