如何判断一个对象的属性是否存在?
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还是比较方便的。