美文网首页
Javascript学习笔记——6.4 检测属性

Javascript学习笔记——6.4 检测属性

作者: IFELSE | 来源:发表于2018-04-25 09:30 被阅读0次

    判断一个对象是否包含某个属性

    in运算符

    左侧是属性名(字符串),右侧是对象

    var o ={x:1}
    'x' in o //true
    'y' in o //false
    'toString' in o //true o继承了toString
    

    hasOwnPreperty()

    判断是否有自有属性

    var o ={x:1}
    o.hasOwnProperty('x') //true
    o.hasOwnProperty('y') //false
    o.hasOwnProperty('toString') //false,toString是继承属性
    

    propertyIsEnumerable()

    必须是自有属性而且是可以枚举的,才返回true。

    Object.prototype.propertyIsEnumerable('toString') //false,不可枚举
    var o = Object.create({x:1})
    o.propertyIsEnumerable('x') //false 继承属性
    o.y = 2
    o.propertyIsEnumerable('y') //true
    

    与undefined比较

    访问不存在的属性会返回undefined,可以利用这一点来判断属性是否存在,注意要用!==

    var o = {x:1}
    o.x !== undefined //true o包含属性x
    o.y !== undefined //false o不包含属性y
    o.toString !== undefined //true o继承toString
    

    但有一个场景无法使用这种方式,就是对象的属性的值本身就是undefined

    var o = {x:undefined}
    o.x !== undefined //false 但是o包含属性x
    

    相关文章

      网友评论

          本文标题:Javascript学习笔记——6.4 检测属性

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