try finally 妙用,防止内存泄漏
作者:chpn 来源:无忧脚本 时间:2008-03-26 12:52:00
<div id="d1"></div>
<script >
function createButton(){
var obj = document.createElement("button");
obj.innerHTML="点我!";
obj.onclick=function(){
//处理click事件
}
obj.onmouseover=function(){
//处理mouseover事件
}
return obj;//这里由于需要返回创建的对象,所以不能把obj直接设为null. return 后obj是局部变量,不能在外部断开其与HTMLElement的引用.ie中将出现问题泄漏问题
}
var 按钮 = document.getElementsById("d1").appendChild( createButton());
按钮.做某些事();
按钮.做某些事();
........
某些东西.某些事(按钮);
......
</script>
这种写法在IE中100%内存泄漏
使用try finally很容易解决些问题
function createButton(){
var obj = document.createElement("button");
obj.innerHTML="点我!";
obj.onclick=function(){
//处理click事件
}
obj.onmouseover=function(){
//处理mouseover事件
}
try{
return obj;
}finally{
obj = null;//这句话在return 之后才执行 , 的效的解决了需在return后将obj置null的问题
}
}
一个函数或方法中,其实有很多地方都需要这种选返回值,最后执行某些事的
标签:try,finally,内存,js
0
投稿
猜你喜欢
ASP无组件上载,带进度条,多文件上载
2008-10-29 10:03:00
X/HTML5 v.s. XHTML2(II)
2008-06-18 13:19:00
css被遮挡的绝对定位
2008-02-29 12:00:00
卸载VS2011 Developer Preview后Sql Server2008 R2建立数据库关系图报“找不到指定的模块”错误的解决方法
2011-11-03 16:49:09
JavaScript,5种调用函数的方法[译]
2009-02-24 16:26:00
Doctype之谜
2009-07-22 20:48:00
交互设计:简单
2011-08-27 16:46:27
asp采集常用的几个FUCTION
2007-09-05 19:45:00
document.createElement()用法及注意事项
2008-04-21 15:16:00
js插入flash可防止虚线框激活
2009-03-13 13:31:00
网页版面布局的方法及技巧
2007-10-29 12:41:00
PHP Laravel门面的实现原理详解
2023-05-25 06:42:36
怎样使MySQL在攻击者面前保持安全
2008-11-17 20:09:00
MySQL数据库的临时文件究竟储存在哪里
2009-02-13 13:44:00
MYSQL数据库教程:唯一编号
2009-02-27 15:27:00
给JavaScript自定义一个Trim函数
2008-04-20 16:30:00
SQL查询入门(中篇)
2011-09-30 11:15:09
css中使用CLASS来设计网页布局
2007-10-30 13:01:00
ASP.NET教程第二讲:安装ASP.NET
2007-08-07 11:59:00
将有安全问题的SQL过程删除,比较全面
2007-08-06 14:46:00