有没有办法将JavaScript中的变量设置为等于object的属性作为引用?

时间:2018-03-04 05:34:30

标签: javascript

是否有任何体面的方法可以将变量设置为等于某个对象的某个属性,或多或少将它作为该属性的引用?我已经包含了一段代码,我想看到的是可能的;我想看看“???”是否有什么东西我可以获得所需的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"

2 个答案:

答案 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"