JavaScript:将对象存储为固定值?

cal*_*531 3 javascript variables object

我在编写JavaScript时注意到了这种行为,但我无法弄清楚原因:

下面是一些重现相关行为的代码.

var o1 = {
  num: 1
}
var o2 = o1;
o2.num = 2;
alert(o1.num);

预期结果:浏览器警告1,因为我只更改了o2对象的属性,而不是o1对象.

实际结果:浏览器提醒2,因为似乎o1等于o2.

我不确定发生了什么事.我如何修复代码,使其提醒1而不是2(假设o1没有改变)?

非常感谢提前.

Fel*_*ing 5

因为两个变量都引用 同一个对象.不在变量赋值上克隆/复制对象.你必须自己做.

在这种情况下,JavaScript的行为与任何(大多数)其他OO语言相同.