recherche

Maison  >  Questions et réponses  >  le corps du texte

Les références circulaires d'objets jq peuvent-elles provoquer des fuites de mémoire ?

On sait que la référence circulaire de l'objet DOM dans la fermeture provoquera des fuites de mémoire dans les versions inférieures d'IE
Alors, la référence circulaire de l'objet jqconduira-t-elle la mémoire ?
Par exemple : la fonction suivante provoquera-t-elle une fuite de mémoire ?

function text() {
    var $butt = $('#butt');
    $butt.click(function() {
        alert($butt.attr('id'));
    });
}
阿神阿神2775 Il y a quelques jours701

répondre à tous(1)je répondrai

  • 某草草

    某草草2017-05-19 10:49:28

    Oui, si vous possédez cet élément#butt在你执行这个函数后从Document中移除,那么它不会被gc回收,因为还存在一个强引用$butt
    使用这种方式引用对象可以减少动态构建jq对象的开销,但是需要在这个dom被销毁的时候手动off掉所有引用,比如你这个$butt销毁后应该销毁你的事件引用。$butt.off()
    另一种方式是在你的事件函数中不要使用闭包,而是使用动态构建的方式。比如$(this).html('hahah')

    répondre
    0
  • Annulerrépondre