从子对象引用父对象,而不将对象文字分配给变量

时间:2019-12-11 13:27:12

标签: javascript

我需要在不使用变量赋值的情况下从子对象引用父对象,类似于super关键字,但是从字面上看,我的示例是:

{ a:1,
  b:{e:a}
}

有一个解决方案

var obj = {
a: 1,
b: {
    get e() {
        return obj.a
    }
}

} 但是我问是否有可能不将对象常量分配给变量

1 个答案:

答案 0 :(得分:4)

您可以使用this来引用同一级别的对象,但在您的情况下,它是嵌套的,因此请使用嵌套的getter保留父上下文。

var obj = {
  a: 1,
  get b() {
    const pctx = this;
    return {
      get e() {
        return pctx.a
      },
      c: 1
    }
  }
}

console.log(obj.b.e)

注意:这样,嵌套对象的引用每次都会不同,并且您无法更新嵌套对象的属性。