【问题标题】:Is it possible to refer to this property value to use as another property name in JavaScript? [duplicate]是否可以引用此属性值以用作 JavaScript 中的另一个属性名称? [复制]
【发布时间】:2022-01-08 13:19:02
【问题描述】:

要引用this.property,有一个getter:

var foo = {
  a: 5,
  b: 6,
  get c() {
    return this.a + this.b;
  }
}

console.log(foo.c) // 11

但是,是否可以在对象初始化期间执行此操作:

var foo = {
  HIDING: 0,
  get state() {
    return this.HIDING;
  }
  [this.HIDING]: { x: 0, y: 0 },
}

我期待

foo: {
  HIDING: 0,
  state: 0,
  0: { x: 0, y: 0 }
}

Self-references in object literals / initializers 这没有回答我的问题,因为它没有谈论使用另一个属性值作为属性名称

【问题讨论】:

  • this.HIDING 在对象初始化之前未定义
  • oof,为什么规范的欺骗目标不能正确涵盖这种情况......无论如何,不​​,您不能在对象初始化程序中进行自引用。只有在初始化程序完成后才能访问该对象。
  • @ASDFGerte 编辑答案?或者添加一个答案?
  • 如果你想要“隐藏”属性,你可以在类声明中使用私有类属性,或者为属性标识符创建你自己的 Symbol 实例。
  • "对象文字/初始化程序中的自引用这不能回答我的问题,因为它没有谈论使用另一个属性值作为属性名称" - 请参阅 @987654322 @ 解释了为什么在创建对象之前无法引用属性值 - 无论您尝试从何处引用它

标签: javascript object this


【解决方案1】:

你只能在初始化之后进行:

var foo = {HIDING: 0};
foo[foo.HIDING] = {x: 0, y: 0};

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2016-06-28
    • 2013-01-30
    • 2010-11-27
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多