<div id="Btn001" style="background:red; width:100px; height:100px" /></body>
var el=document.getElementById("Btn001");
el.onclick=function(){
alert(123)
}
el=null
alert(el)
我以为我把el清空,回调函数没有被引用了,会被垃圾回收,可为什么每次点击div,依然可以弹出123来?
var el=document.getElementById("Btn001");
el.onclick=function(){
alert(123)
}
el=null
alert(el)
我以为我把el清空,回调函数没有被引用了,会被垃圾回收,可为什么每次点击div,依然可以弹出123来?
我一直把事件当类似于对象的方法来看,var obj=new Object()
obj.method=function(){
alert(123)
}
obj=null;
obj.method()例如:obj=null了,obj.method自然也就被垃圾回收掉了,那我可不可以这样理解,只要元素对象被绑定了,el=null这句话暂时是无效的?el对象依然存在内存中,直到接触绑定后生效?
var el=document.getElementById("Btn001"); //el是一个变量,指向了一个dom对象
el.onclick=function(){
alert(123)
}
el=null//断开变量和dom对象之间的引用,但dom对象是依然存在的。
alert(el);
感谢likeajin 这么说俺就懂了,也谢谢calmcrime
el=document.getElementById("Btn001");
el=document.getElementById("Btn001"); 还想问一下, 如果有三个这样的语句,是不是会有三个document.getElementById("Btn001"),Dom实体驻留在内存里?
不是那个dom
比如 你看到了 星星 现在你闭上眼睛 那么 星星确实还是存在
你这儿只是将对象的一个引用释放了,但页面中的html等效于全局变量,相当于资源仍然被全局变量持有,是不会被释放的.