1

jQuery プラグイン/ウィジェットを OOP オブジェクトとして作成し、そのオブジェクトに HTML/jQuery 要素 ( $elem) をプロパティとして保存しています。newまた、そのオブジェクトの参照 (を使用して作成) をdataHTML 要素の属性に格納しています。これにより、循環参照/メモリリークが発生しますか?

CoffeeScript のコードは、おおまかに次のようになります。

class wid
  constructor
    @$elem = $('<div>hello</div>')
    @$elem.appendTo('body')
    @$elem.data('obj',@)  // adding the instance to the element's data attribute
  updateText: (p)->
     @$ele.text(p)

widget = new wid()
4

1 に答える 1

-3

実際のブラウザでは、いいえ。Microsoft のブラウザ形状のオブジェクトである Internet Explorer には、DOM 用と Javascript 用に別々のガベージ コレクタがあるため、循環参照を簡単に作成できます。IE はオペレーティング システムと緊密に統合されているため、ブラウザをシャットダウンするだけではこのメモリは解放されません。OS を再起動する必要があります。

ただし、これは良いことです。IE がますます遅くなり、解放されていないオブジェクト参照が重荷になるにつれて、ユーザーは Microsoft の品質に関する重要な教訓を学びます。

于 2013-08-07T20:07:30.497 に答える