我使用Object.defineProperty
方法来定义对象的属性:
const o = { a: 1 }
Object.defineProperty(o, 'b', {
get() {
return this.a
}, set(value) {
this.a = value
}
})
但是,当我使用 console.log
尝试打印对象 o
时,b
属性似乎不在其中。
但是当我尝试使用o.b
访问它时,它可以返回正确的值
所以我很困惑:为什么属性不能打印但可以访问?
最佳答案
使用 .defineProperty()
添加的属性默认情况下不可枚举。
通过设置enumerable: true
使它们“可见”
var foo = {}
Object.defineProperty(foo, "a", {
get() { return "a"; }
});
Object.defineProperty(foo, "b", {
get() { return "b"; },
enumerable: true
});
console.log(Object.keys(foo));
关于Javascript:无法打印由 Object.defineProperty 定义的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54162053/