使用javascript模块模式安全吗?

问题描述:

我一直在使用javascript模块模式。使用javascript模块模式安全吗?

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

var test = (function(){ 

    var events = { 
     // my functions go here 
    } 

    return { 
    // return something 
    } 

}()); 

他说,由于事件的变量是一个对象,我不为它设置为null,它可能会导致即使我设置零供以后测试内存泄漏。

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

我需要建议!

我认为你的代码没问题。当你有因为循环引用的DOM元素的引用,在封闭的内存泄漏发生(foo持有至element,并element持有至foo,这样他们就可以永远被垃圾收集):

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

我对这种信念来源于here

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

@moon - 为什么不用太担心?该代码多久会在两次会议之间执行?有多少字节会丢失?然后,你必须考虑将会互相干扰并运行你的Javascript的各种浏览器。

总之 - 集中你的努力在其他地方 - 那么你会得到更好的奖励。

+0

//嗯......我把这个代码示例不是因为我使用了该代码。这只是我在帖子中提到的一个例子。 – Moon 2011-12-18 07:12:41

+0

@月亮 - 我只是觉得你的努力在其他地方会更好。 (BTW - 来自Enid Btyton的名字 - 远方树的民俗) – 2011-12-18 07:18:59

+0

//我在这里欣赏和理解你的意图,但是内存泄漏不是我想跳过的东西;通过留下一个已知问题来集中我的努力在我的小见解中是个问题 – Moon 2011-12-18 07:26:15