2

js には参照されなくなったメモリを解放するガベージ コレクションがあることは承知していますが、次のように自分自身を参照するオブジェクトに対して GC が機能するかどうかに興味があります。

var x = {
  b:function(){
    alert('hello');
  },
  y:function(){ //init listeners
    $(some-dom-el).click(function(){
       x.b();
    });
  },
  z:function(){
    var ex = this.r(55,9000);
  },
  r:function(a,b){
    return a + b;
  }
}

$(function(){
   x.y();
});

deleteonを使用var xすると、オブジェクトが正常に削除されますか (もちろん、イベントリスナーを手動で削除した後)?

4

1 に答える 1

1

GC は、循環参照の処理方法を知っています。(古い IE を除く)。

ただし、ライブ DOM 要素のイベント ハンドラーに参照がある場合、その参照は永久に存続するため、オブジェクトは GC されません。(または、ハンドラーまたは要素を削除するまで)

于 2013-01-14T18:14:44.400 に答える