怎样判断JS对象中的属性

时间:2023-03-09 06:53:55
怎样判断JS对象中的属性
 // 如何在不访问属性值的情况下判断对象中是否存在这个属性
var obj = {
a: 2
}; Object.defineProperty(
obj,
'b',
// 让 b 不可枚举
{
enumerable: false,
value: 3
}
);
// in 操作符会检查属性是否在对象及其 [[Prototype]] 原型链中,而 hasOwnProperty()只会检查属性是否在对象中
console.log('a' in obj);
console.log('b' in obj); console.log(obj.hasOwnProperty('a'));
console.log(obj.hasOwnProperty('b')); // propertyIsEnumerable(..) 检查属性名是否直接存在于对象中,并且是可枚举的
console.log(obj.propertyIsEnumerable( 'a' ));
console.log(obj.propertyIsEnumerable( 'b' )); // Object.keys(..)会返回一个包含可枚举的属性的数组
console.log(Object.keys( obj ));
// Object.getOwnPropertyNames(..)返回一个包含所有属性的数组,不管能不能枚举
console.log(Object.getOwnPropertyNames( obj ));