是否可以不直接更改对象的值?
例如
a = {x: 5}
b = a.x
b = 100
a.x // => 5
我想得到 100,但实际上a.x
仍然是 5。
不像你要去,不。你可以这样做:
a = { x: 5 };
b = a;
b.x = 100;
a.x // => 100
是的你可以。对对象的所有引用都是相等的,无论它是否是第一个。但是,a.x
它不是一个对象,它是对象的属性a
,所以当b = a.x
你复制该属性的一个值时,它恰好是一个简单的数字b
。b
没有以a
任何方式链接到,分配其他东西对.b
将无济于事a
。您需要分配b = a
,然后您可以将.x
两个变量引用的对象的属性修改为a.x
或b.x
。
只需将数字用作对象,而不是文字:
a = {x: {v: 5}}
b = a.x
b.v = 100
a.x.v // => 100
在 JavaScript 中不可能实现这一点。5 是一个数字类型,它是一个值类型。与函数、对象或数组不同,无法通过引用访问它。