深入解读JavaScript

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

2018-07-08  本文已影响1人  悟C

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

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还是比较方便的。

上一篇下一篇

猜你喜欢

热点阅读