是否可以不直接更改对象的值?
例如
a = {x: 5}
b = a.x
b = 100
a.x // => 5
我想得到100,但实际上,a.x
仍然是5。
答案 0 :(得分:5)
不喜欢你要去,不。你可以这样做:
a = { x: 5 };
b = a;
b.x = 100;
a.x // => 100
答案 1 :(得分:1)
是的,你可以。对象的所有引用都是相同的,无论它是否为第一个。但是,a.x
不是对象,它是对象a
的属性,因此使用b = a.x
复制该属性的值,恰好是{{1}的简单数字}。 b
没有以任何方式与b
相关联,并为a
分配其他内容将对b
无效。您需要分配a
,然后您可以将这两个变量引用的对象的属性b = a
修改为.x
或a.x
。
答案 2 :(得分:1)
只使用数字作为对象,而不是文字:
a = {x: {v: 5}}
b = a.x
b.v = 100
a.x.v // => 100
答案 3 :(得分:0)
在JavaScript中实现这一点是不可能的。 5是Number类型,它是值类型。与Function,Object或Array不同,无法通过引用访问它。