我知道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
成功删除对象(当然在手动删除事件监听器之后)?
答案 0 :(得分:1)
GC确实知道如何处理循环引用。 (旧IE中除外)。
但是,如果在实时DOM元素中的事件处理程序中有引用,则您的对象将不会获得GC,因为该引用将永远存在。 (或直到你删除处理程序或元素)