在js中取消分配对象文字所使用的内存

时间:2013-01-14 18:12:59

标签: javascript

我知道js有垃圾收集,可以释放不再被引用的内存,但我很好奇地想要使用G.C.适用于像这样引用它们的对象:

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();
});

那么在delete上使用var x成功删除对象(当然在手动删除事件监听器之后)?

1 个答案:

答案 0 :(得分:1)

GC确实知道如何处理循环引用。 (旧IE中除外)。

但是,如果在实时DOM元素中的事件处理程序中有引用,则您的对象将不会获得GC,因为该引用将永远存在。 (或直到你删除处理程序或元素)