读书人

关于javascript对象的一个有关问题( 关

发布时间: 2013-09-08 15:21:21 作者: rapoo

关于javascript对象的一个问题( 关于变量的生存周期 )
假设有如下javaScript代码:

//Point A:

function f(arg){
this.property = arg;
}

var a = new f(1);

//Point B:

我想知道的是:当程序运行到Point B的时候, a对象中的变量arg是否还存在,或是已被销毁?

( 请真正了解原理的朋友回答,如果你对自己的答案不是很有把握,请不要回答 )


[解决办法]
为了直观体验,利用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="test()">创建对象</button>
<button onclick="javascript:a=null">主动释放</button>
<script>
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>

读书人网 >JavaScript

热点推荐