使用javascript模块模式是否安全?

时间:2011-12-18 06:51:39

标签: javascript memory-leaks

我一直在使用javascript模块模式。

我向我的一位同事展示了一个模块模式的例子。他说以下代码可能会导致内存泄漏。

var test = (function(){

   var events = {
      // my functions go here
   }

   return {
     // return something
   }

}());

他说,因为事件变量是一个对象而且我没有为它设置null,所以即使我稍后设置 null for test ,也会导致内存泄漏。

据我所知,上面的代码片段没问题,因为我没有传递事件。

我需要建议!

2 个答案:

答案 0 :(得分:3)

我认为您的代码很好。由于循环引用(foo保留在element上,而element保留在foo,因此当您引用DOM元素时,闭包中会发生内存泄漏,所以它们永远不会被垃圾收集):

function foo(element, a, b) {
    element.onlick = function(a, b) { /* uses a and b */ };
}

我相信这一信念的来源是here

但其他人可能知道另一个问题......

答案 1 :(得分:0)

@moon - 为什么要担心太多?这些代码多久经常在会议之间执行?会丢失多少字节?然后你必须考虑各种浏览器,它们可以互操作并运行你的Javascript。

简而言之 - 将你的努力集中在别处 - 然后你会获得更好的奖励。

相关问题