Javascript:无法打印由 Object.defineProperty 定义的对象属性

标签 javascript object

我使用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/

相关文章:

Python3找到最后一次出现的字符串然后写入

delphi - 如何从 DLL 返回实例?

javascript - 如何将警报值添加到元素

javascript - 从 dom-repeat 访问元素的属性

javascript - 如何用图像替换气泡?

Java 库存项目。数组

php多线程变量范围共享问题

javascript - 尝试增量转换为 Typescript 时,非 Typescript 导入失败

javascript - 使用 Trianglify 设置 div 背景

c++ - 需要帮助理解未在范围内声明的对象