function modify(val, newVal) {
val = newVal;
}
constructorFunc = function () {
var _private = false;
return {
modifyPrivate: function(toVal) {
return modify(_private, toVal); // LINE REFERRED TO BELOW AS X
}
};
}
var x = constructorFunc();
x.modifyPrivate(true);
x.modifyPrivate(true); // _private still starts off as false, meaning it wasn't set to true
我有一个问题是为什么我第二次调用 x.modifyPrivate(true) 为什么当行 X 运行时,传入的 _private 的值仍然是“假”。
如果我稍微修改一下我对闭包的了解,使我可以理解这一点,即闭包是通过引用完成的,并且当您更改引用的值时,您并没有更改原始引用指向的值,而是更改了引用本身指向一些新的价值......但这整件事非常令人困惑,我相信那里的人可以向我指出网上的一张图表来解释这一点。
我也很想知道如何编写此代码,以便实际上修改 _private 以供后续调用 modify()。