【发布时间】:2013-12-26 19:46:06
【问题描述】:
我的情况有点晦涩。主要是因为我认为我已经掌握了闭包。所以基本上我想要的是将集合重置为默认值。所以假设我有一个集合,它有带有对象数组参数的构造函数。
var c = new collection([{x},{y},{z}]);
然后集合会定期更新。因为我没有将数组的初始值保存在某个地方,有时我想重置为初始值。
现在我不是在问如何实现这一点,我对闭包本身的问题可能有多种方式。请进一步阅读
所以我可能想用闭包来捕获这个初始值,所以它可能看起来像这样。
c.on('reset',(function(arr){
return function(){
c.internalarray = arr;
}
})(c.internalarray))
所以它似乎不起作用,因为引用作为参数传递,集合更新了据称被困的 arr 也得到了更新,它的最终结果总是正确的
arr === c.internalarray;
我可能会考虑传递数组的克隆,但重点不是在某个地方创建一个数据副本并分配保持全局变量。
所以我的问题是我做错了什么。我认为不知何故,javascript引擎会以某种方式隐式创建被困变量/对象的副本。我不必跟踪他们。
【问题讨论】:
标签: javascript closures