2015-06-14 36 views
0

我正在寫一個jQuery插件銷燬方法。我擔心在調用destroy方法後DOM對象的引用導致內存泄漏的可能性。下面的代碼是否有可能導致內存泄漏?內存泄漏和jQuery插件

jQuery.fn.foo = function(){ 
    var $bar = $('.bar'); 

    $bar.on('click.foo', function(){ 
     var $baz = $('.baz'); 
    }); 

    this.destroyFoo = function(){ 
     $bar.off('click.foo'); 
     //is this necessary to avoid an orphan node? 
     $bar = null; 
    }; 

    return this; 
}; 

var $qux = $('.qux').foo(); 

$qux.destroyFoo(); 

回答

1

看起來不錯。你的變量$ bar在函數範圍內聲明,所以它不能在其外部訪問。

$欄= NULL; - 足以清除對元素的引用。

+0

但它是需要清除的參考?該參考是否會持續?要確保我理解這個原則。 – maxhallinan

+0

該元素的引用仍然存在,這是正確的。將$ bar賦值爲null將刪除該引用。在你的情況下沒有必要清除引用,因爲如果你將$ qux賦值爲null,內部變量$ bar將不再存在。如果您沒有將$ qux賦值爲null,那麼$ bar引用仍然存在。 – dchayka

+0

這是有道理的。謝謝! – maxhallinan