在下面的脚本中,我无法理解为什么通过更改本地(私有)对象本地来更改对象全局中的属性prop?
var global = {}
global.prop = "Global init";
var ChangeState = (function () {
var local = global;
local.prop = "Changed"; // expecting Global init?
})()
alert("Global = " + global.prop)
我不是要求JS改变全局,但它还是会改变它吗?请帮忙。
答案 0 :(得分:1)
global
的值是对象的引用。
在您的功能中,您将该引用复制到local
。
然后,您可以更改该对象的prop
属性的值。
由于global
和local
引用了同一个对象,global.prop
和local.prop
将始终是相同的值。
有关如何创建对象副本而不是参考副本的详细信息,请参阅this other question。