我已經使用jQuery了幾個月,並閱讀了幾天的JavaScript內存泄漏。 我有一個關於內存泄漏和jQuery兩個問題:使用jQuery和內存泄漏
當我綁定(使用.bind(...))我一定要拆散他們(.unbind()),如果我離開這個頁面/刷新避免內存泄漏或jQuery爲我刪除它們?
關於關閉,我讀了他們可能導致內存泄漏,如果使用不正確。如果我做了如下操作:
函數doStuff(objects){//對象是一個容納DOM對象數組的jQuery對象 var textColor =「red」; (function)(){ $(this).css(「color」,textColor); }); }
doStuff($(「*」));
我知道,上面的代碼是愚蠢的(更好/更簡單[R這樣做的方法),但我想知道這是否會導致。每次循環引用/關閉的問題,它是否會導致內存泄漏。如果它確實導致內存泄漏,我將如何重寫它(通常類似的方法)以避免內存泄漏?
在此先感謝。
編輯:我有另一個類似問題2的情況下(我想這部分3)。
如果有這樣的事情:
函數doStuff(對象){// IFRAME對象 VAR文字顏色= 「紅色」;
function innerFunction() { $(this).contents().find('a').css("color", textColor); } objects.each(function(){ //I can tell if all 3 are running then we //have 3 of the same events on each object, //this is just so see which method works/preferred //Case 1 $(this).load(innerFunction); //Case 2 $(this).load(function(){ $(this).contents().find('a').css("color", textColor); }); //Case 3 $(this).load(function(){ innerFunction(); }); });
}
doStuff($( 「IFRAME」));
有3種情況,我想知道哪種方法(或全部)會產生內存泄漏。此外,我想知道哪個是首選方法(通常我使用案例2)或更好的實踐(或者如果這些不好,會更好?)。
再次感謝!
如果沒有必要的循環引用,可能會導致封閉泄漏 – davin 2011-03-11 03:00:02