84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
已知閉包中dom物件循環引用在低版本ie會導致記憶體洩漏,那麼jq物件循環參考會記憶體洩漏嗎?例如 : 如下函數會導致記憶體洩漏嗎?
function text() { var $butt = $('#butt'); $butt.click(function() { alert($butt.attr('id')); }); }
闭关修行中......
會的,如果你的這個元素#butt在你执行这个函数后从Document中移除,那么它不会被gc回收,因为还存在一个强引用$butt。使用这种方式引用对象可以减少动态构建jq对象的开销,但是需要在这个dom被销毁的时候手动off掉所有引用,比如你这个$butt销毁后应该销毁你的事件引用。$butt.off()。另一种方式是在你的事件函数中不要使用闭包,而是使用动态构建的方式。比如$(this).html('hahah')
#butt
$butt
$butt.off()
$(this).html('hahah')
會的,如果你的這個元素
#butt
在你执行这个函数后从Document中移除,那么它不会被gc回收,因为还存在一个强引用$butt
。使用这种方式引用对象可以减少动态构建jq对象的开销,但是需要在这个dom被销毁的时候手动off掉所有引用,比如你这个
$butt
销毁后应该销毁你的事件引用。$butt.off()
。另一种方式是在你的事件函数中不要使用闭包,而是使用动态构建的方式。比如
$(this).html('hahah')