从变量修改对象属性

时间:2017-07-04 18:06:04

标签: javascript

我正在尝试做这样的事情:

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来修改。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

不,你不能"链接"变量和对象属性。

如果o属性是对象的引用,它将起作用:

var obj = { o: { foo: 'bar' } };
var o = obj.o;
o.foo = 'baz';
console.log(obj.o.foo); // 'baz'

但是复制了基元,你无法获得对字​​符串的引用。当您读取o的属性obj的值时,会复制该值,因为它是一个字符串,并且您获得的新字符串与该字符串中的旧字符串无关。宾语。

将新字符串分配给变量时,旧字符串值将丢失(至少对于变量o)。