我在 JavaScript 中遇到了一些内存泄漏问题。
我正在使用Firefox 的 Leak Memory 0.4.5 扩展,它向我展示了仍然保留在内存中的那些 JavaScript 对象。
现在我不确定如何正确地将 dom-object 与事件等解除绑定。
例如,我有一个名为“dropdownbox”的 jQuery 小部件。在destroy方法中,我做了所有必要的东西来取消绑定事件处理程序,比如:
this.box.find('.toggler').unbind();
this.box.remove();
this.box = null;
这 3 行是必须的,还是只能调用 this.box.remove()?
直到今天,我还没有从 DOM 元素中解绑或清除某些东西,因为我认为这无关紧要。但是我发现了一个问题,在同一个站点上开发了 2 个小时后,我的 Firefox 消耗了 1GB!
所以我在使用闭包等时读到了一些内存泄漏。
所以这是我的第二个问题:我经常使用闭包,因为它们非常酷且方便。
有人说你不应该对所有事情都使用闭包。例如,如果我们有以下代码:
function foo(param1, param2) {
var local1, local2;
$('a').click(function() {
alert('YEAH');
});
}
这样做会更好:
funtion foo(param1, param2) {
var local1, local2;
$('a').click(clickEvent);
}
function() {
alert('YEAH');
}
还是我误解了?