2011-12-18 95 views
2

我一直在使用javascript模塊模式。使用javascript模塊模式安全嗎?

我向我的一個同事展示了一個模塊模式的例子。他說下面的代碼可能會導致內存泄漏。

var test = (function(){ 

    var events = { 
     // my functions go here 
    } 

    return { 
    // return something 
    } 

}()); 

他說,由於事件的變量是一個對象,我不爲它設置爲null,它可能會導致即使我設置零供以後測試內存泄漏。

據我所知,上面的代碼片段沒問題,因爲我沒有傳遞事件。

我需要建議!

回答

3

我認爲你的代碼沒問題。當你有因爲循環引用的DOM元素的引用,在封閉的內存泄漏發生(foo持有至element,並element持有至foo,這樣他們就可以永遠被垃圾收集):

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

我對這種信念來源於here

但其他人可能知道一個問題的...

0

@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