jq对象循环引用会导致内存泄漏吗?
已知闭包中dom对象循环引用在低版本ie会导致内存泄漏,
那么jq对象循环引用会内存泄漏吗?
比如 : 如下函数会导致内存泄漏吗?
function text() {
var $butt = $('#butt');
$butt.click(function() {
alert($butt.attr('id'));
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
会的,如果你的这个元素
#butt
在你执行这个函数后从Document中移除,那么它不会被gc回收,因为还存在一个强引用$butt
。使用这种方式引用对象可以减少动态构建jq对象的开销,但是需要在这个dom被销毁的时候手动off掉所有引用,比如你这个
$butt
销毁后应该销毁你的事件引用。$butt.off()
。另一种方式是在你的事件函数中不要使用闭包,而是使用动态构建的方式。比如
$(this).html('hahah')