美文网首页深入解读JavaScript
如何判断一个对象的属性是否存在?

如何判断一个对象的属性是否存在?

作者: 悟C | 来源:发表于2018-07-08 11:56 被阅读1次

    如何判断一个对象的属性是否存在?这个简单:

    var obj = { a: 2 }
    if (obj.a) {
      console.log('存在');
    } else {
      console.log('不存在');
    }
    

    如果obj.a的值是undefined呢?那怎么区分是obj.a不存在,还是obj.a等于undefined呢?

    我们知道有一个操作符in,可以在不访问属性值的情况下判断对象中是否存在这个属性:

    var cat = {
      color: undefined
    }
    
    Object.prototype.name = '小喵'
    
    console.log('color' in cat) // true
    console.log('name' in cat) // true
    
    console.log(cat.hasOwnProperty('name'))  // false
    

    in操作符会检测属性是否存在对象及其原型链中,如果只是判断当前对象是否存在某个属性,那么可能会得到你意想不到的结果。不过幸亏还有一个hasOwnProperty,它只检测属性是否存在当前对象中。

    除了hasOwnProperty,还有一个效率比较低的方法:

    var cat = {
      color: undefined
    }
    
    Object.prototype.name = '小喵'
    
    console.log('color' in cat) // true
    console.log('name' in cat) // true
    
    console.log(cat.hasOwnProperty('name'))   // false
    
    console.log(Object.keys(cat).indexOf('name') > -1) //false
    

    只是想获得所有的可枚举属性列表,用Object.keys还是比较方便的。

    相关文章

      网友评论

        本文标题:如何判断一个对象的属性是否存在?

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