返回列表

转载:javascript 闭包 变量释放GC 测试

默认分类 2013/12/11 02:29

原文地址:http://blog.csdn.net/fzfei2/article/details/11018675

为了直观体验确认JS变量的释放,利用VBS对象析构的功能,来提示是否释放,只能在IE 下测试 你可以修改 f 里的代码进行测试

<title>测试GC</title>   
<script language="vbs">  
Class C  
        public property get value  
        value="ok"  
        end property  

   Private Sub Class_Terminate     
      MsgBox("释放了")  
   End Sub  
End Class  
function vbObj()  
    set vbObj= new C  
end function   
</script>  
<button onclick="javascript:test()">创建对象</button>  
<button onclick="javascript:a=null">主动释放</button>  
<script language="javascript" >  
var a;  
function f(arg){  
      this.xx=function(){ alert( arg.value ) }  //如果这里有引用 不会马上会释放  
     // this.yy=function(){ alert( eval('1+2')  ) }  //有eval 的也不会马上释放  
     //this.zz=function(){}   //会马上释放  
}     
function test(){  
    var o=vbObj();  
     a=new f(o);  
}  
setInterval(CollectGarbage, 500);  
</script>