我正在尝试做这样的事情:
var obj={o:"a string"};
var o=obj.o
console.log(o)
o='modified'
console.log(o)
console.log(obj.o)
结果是:
a string
modified
a string
但我希望它是:
a string
modified
modified
我尝试解构也没有成功:似乎属性和变量没有链接。
有没有办法将o链接到obj.o?我不想使用obj.o来修改obj属性,而是使用o来修改。
提前感谢您的帮助。
答案 0 :(得分:4)
不,你不能"链接"变量和对象属性。
如果o
属性是对象的引用,它将起作用:
var obj = { o: { foo: 'bar' } };
var o = obj.o;
o.foo = 'baz';
console.log(obj.o.foo); // 'baz'
但是复制了基元,你无法获得对字符串的引用。当您读取o
的属性obj
的值时,会复制该值,因为它是一个字符串,并且您获得的新字符串与该字符串中的旧字符串无关。宾语。
将新字符串分配给变量时,旧字符串值将丢失(至少对于变量o
)。