是否有任何体面的方法可以将变量设置为等于某个对象的某个属性,或多或少将它作为该属性的引用?我已经包含了一段代码,我想看到的是可能的;我想看看“???”是否有什么东西我可以获得所需的console.log
输出。谢谢!
let myObject = {
value: "test";
}
let myVar = ???;
// How do I define myVar such that...
console.log(myVar); // -> "test"
myObject.value = "new";
console.log(myVar); // -> "new"
答案 0 :(得分:1)
不是一个体面的方式"。
您可以在全局对象(浏览器中为window
)上定义getter和setter,它提供了另一种在其他地方获取和设置值的方法:
let myObject = {
value: "test"
}
Object.defineProperty(window, "myVar", {
configurable: true,
get: ()=> myObject.value,
set: value => (myObject.value=value)
});
console.log( "myObject.value %s", myObject.value);
console.log( "myVar %s", myVar);
myVar = "changed value";
console.log( "myObject.value %s", myObject.value);
console.log( "myVar %s", myVar);

但是在函数中使用它并不能很好地转换 - 你不能访问函数的词法范围记录来附加一个setter / getter对,只能在函数范围内使用。在全局对象上使用该方法几乎无法兑换自己(="不要这样做")。
答案 1 :(得分:0)
您需要引用对象本身:
let myObject = {
value: "test" // removed semicolon from here
}
let myVar = myObject;
console.log(myVar.value); // -> "test"
myObject.value = "new";
console.log(myVar.value); // -> "new"