以下按預期列印 3。
let bar = 3
let obj = { foo: bar }
console.log(obj.foo);
但是,如果我更改 bar 的值,則 obj.foo 的值不會更改。此外,如果我更改 obj.foo 的值,則 bar 的值不會更改。
這告訴我,當創建物件時,它并沒有真正使用 bar 作為右值,而是使用它的值作為值。我如何以不同的方式定義 obj 以便兩個值始終匹配?
uj5u.com熱心網友回復:
使用 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
有關getter和setter 的更多資訊,請參閱 MDN
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364772.html
標籤:javascript 目的 传递引用
上一篇:有什么方法可以跟蹤我在JavaScript中使用工廠函式創建了多少個物件?
下一篇:從變數中獲取物件的值
