点此查看完整干净版本: try finally 妙用,防止内存泄漏
中华图网
->
网页设计交流
->
try finally 妙用,防止内存泄漏
登录
->
注册
->
回复主题
->
发表主题
越兔
2008-08-18 09:55
转于51js chpn 同学:http://bbs.51js.com/thread-76615-1-1.html
Code:
<div id="d1"></div>
<script >
function createButton(){
var obj = document.createElement("button");
obj.innerHTML="点我!";
obj.onclick=function(){
//处理click事件
}
obj.onmousedown=function(){
//处理mousedown事件
}
return obj;//这里由于需要返回创建的对象,所以不能把obj直接设为null. return 后obj是局部变量,不能在外部断开其与HTMLElement的引用.ie中将出现问题泄漏问题
}
var 按钮 = document.getElementsById("d1").appendChild( createButton());
按钮.做某些事();
按钮.做某些事();
........
某些东西.某些事(按钮);
......
</script>
[可以先修改代码再运行]
这种写法在IE中100%内存泄漏
使用try finally很容易解决些问题
Code:
function createButton(){
var obj = document.createElement("button");
obj.innerHTML="点我!";
obj.onclick=function(){
//处理click事件
}
obj.onmousedown=function(){
//处理mousedown事件
}
try{
return obj;
}finally{
obj = null;//这句话在return 之后才执行 , 的效的解决了需在return后将obj置null的问题
}
}
[可以先修改代码再运行]
一个函数或方法中,其实有很多地方都需要这种选返回值,最后执行某些事的
然后我在介绍一个从moz那里的方法。。。
Code:
<script type="text/javascript">
!function () {
var a = function () {
//....
};
!function () {
var dom = ....
dom.xx = a;
}();
}()
</script>
[可以先修改代码再运行]
这个也相当的不错。。。:D
查看完整干净版本: try finally 妙用,防止内存泄漏
Powered by
Cntuw.com
Time 0.012454 second(s),query:3 Gzip enabled
You can
|