0

是否可以不直接更改对象的值?

例如

a = {x: 5}

b = a.x
b = 100

a.x // => 5

我想得到 100,但实际上a.x仍然是 5。

4

4 回答 4

5

不像你要去,不。你可以这样做:

a = { x: 5 };
b = a;
b.x = 100;
a.x // => 100
于 2012-06-14T10:03:26.863 回答
1

是的你可以。对对象的所有引用都是相等的,无论它是否是第一个。但是,a.x它不是一个对象,它是对象的属性a,所以当b = a.x你复制该属性的一个值时,它恰好是一个简单的数字bb没有以a任何方式链接到,分配其他东西对.b将无济于事a。您需要分配b = a,然后您可以将.x两个变量引用的对象的属性修改为a.xb.x

于 2012-06-14T10:05:43.180 回答
1

只需将数字用作对象,而不是文字:

a = {x: {v: 5}}

b = a.x
b.v = 100

a.x​​.v // => 100
于 2012-06-14T10:31:47.637 回答
0

在 JavaScript 中不可能实现这一点。5 是一个数字类型,它是一个值类型。与函数、对象或数组不同,无法通过引用访问它。

于 2012-06-14T10:04:38.040 回答