【问题标题】:How to set the rvalue of an object item equal to a variable and not just a value?如何将对象项的右值设置为等于一个变量而不仅仅是一个值?
【发布时间】:2021-12-31 05:37:06
【问题描述】:

以下按预期打印 3。

let bar = 3
let obj = { foo: bar }
console.log(obj.foo);

但是,如果我更改 bar 的值,则 obj.foo 的值不会更改。另外,如果我改变 obj.foo 的值,bar 的值不会改变。

这告诉我,当创建对象时,它并没有真正使用 bar 作为右值,它使用它的值作为值。如何以不同方式定义 obj 以使两个值始终匹配?

【问题讨论】:

  • 老实说,我不太确定这个,但我建议在对象内部使用getset 函数。
  • JS 没有传递引用。

标签: javascript object pass-by-reference


【解决方案1】:

使用 getter 和 setter

let bar = 3;
let obj = { 
    get foo() { return bar },
    set foo(newValue) { bar = newValue }
};
console.log(obj.foo); // will show current value of 'bar'
obj.foo = 7 // will change 'bar' to 7

有关 getterssetters 的更多信息,请参阅 MDN

【讨论】:

  • 是的,我正在考虑回复此问题,但我不确定提出此问题的人是否希望能够做到 obj.bar = 5 或类似的设置 bar
  • 啊,他们确实问过这个问题,让我更新一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
相关资源
最近更新 更多