可枚举属性
可枚举:可以遍历的,比如下面这段代码
const obj = {
a: 1
}
obj.b = 2
给obj对象添加了属性a和属性b,这两个对象是可枚举的。
不可枚举属性
顾名思义,不可枚举就是不可以被遍历的,除了声明式对象以外,JS还提供了Object.defineProperty
方法创建对象,这种方式创建对象,可以手动设置属性是否可枚举。
Object.defineProperty(obj,'c',{
// 是否可枚举,false表示不可
enumerable: false
// 给属性c赋值
value: 3
})
上面这段代码,最重要的就是enumerable
,它的默认值是true
可被枚举,我们可以手动设置它。
判断属性是否可枚举
如果想要知道某个属性是否可被枚举,JS提供了propertyIsEnumerable
方法。
obj.propertyIsEnumerable('a'); // true
obj.propertyIsEnumerable('b'); // true
obj.propertyIsEnumerable('c'); // true