标题: [原创] try finally 妙用,防止内存泄漏
chpn
大恐龙
Rank: 4



UID 61902
精华 1
积分 754
帖子 322
威望 361
阅读权限 50
注册 2006-12-11
状态 离线
 
发表于 2008-3-8 19:57  资料  个人空间  短消息  加为好友 
try finally 妙用,防止内存泄漏

<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的问题
       }
}


一个函数或方法中,其实有很多地方都需要这种选返回值,最后执行某些事的

[[i] 本帖最后由 chpn 于 2008-3-10 09:41 编辑 [/i]]


本帖最近评分记录
月影   2008-3-10 10:45  威望  +10   赞~
井底的蛙   2008-3-10 10:03  威望  +3   
dron   2008-3-10 10:02  威望  +10   非常棒!
winter   2008-3-8 21:00  威望  +10   构思巧妙




无论走到哪里,我的家都只有一个。。那就是重庆。
顶部
Rimifon (无名)
超级版主
Rank: 8Rank: 8
新手上路


UID 11749
精华 3
积分 5914
帖子 3203
威望 3193
阅读权限 150
注册 2004-5-22
来自 湖南长沙
状态 离线
 
发表于 2008-3-8 20:35  资料  个人空间  主页 短消息  加为好友  添加 Rimifon 为MSN好友 通过MSN和 Rimifon 交谈
呵呵,很奇怪的写法。



   提示:您可以先修改部分代码再运行






風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)
顶部
qgy18
大恐龙
Rank: 4


UID 50656
精华 2
积分 894
帖子 75
威望 769
阅读权限 50
注册 2006-4-22
状态 离线
 
发表于 2008-3-8 20:57  资料  个人空间  短消息  加为好友 
呵呵 手动垃圾回收啊

顶部
winter
超级版主
Rank: 8Rank: 8
5毛发一贴,千里不留行。


UID 65747
精华 11
积分 7582
帖子 3353
威望 3335
阅读权限 150
注册 2007-2-27
状态 离线
 
发表于 2008-3-8 20:59  资料  个人空间  短消息  加为好友 
这个做法非常巧妙啊





顶部
solidluck
霸王龙
Rank: 6Rank: 6
爬虫


UID 53786
精华 1
积分 1335
帖子 659
威望 669
阅读权限 70
注册 2006-6-29
状态 离线
 
发表于 2008-3-10 03:41  资料  个人空间  短消息  加为好友 
异常捕获用多了会不会也造成某些问题呢?





如果山不能来我们这边,我们就到山那边去吧!
顶部
hansir
小虫
Rank: 1



UID 78910
精华 0
积分 40
帖子 14
威望 13
阅读权限 10
注册 2007-11-15
状态 离线
 
发表于 2008-3-10 09:54  资料  个人空间  主页 短消息  加为好友  添加 hansir 为MSN好友 通过MSN和 hansir 交谈
不错,





http://www.hansir.cn
顶部
dron
超级版主
Rank: 8Rank: 8



UID 19294
精华 3
积分 6306
帖子 3043
威望 3465
阅读权限 150
注册 2004-11-9
来自 中国福建
状态 离线
 
发表于 2008-3-10 10:02  资料  个人空间  短消息  加为好友 
非常棒!





顶部
dinho
小恐龙
Rank: 3Rank: 3



UID 4442
精华 0
积分 262
帖子 135
威望 131
阅读权限 30
注册 2003-7-19
状态 离线
 
发表于 2008-3-10 10:36  资料  个人空间  短消息  加为好友 
不错,支持。

顶部
月影
超级版主
Rank: 8Rank: 8



UID 24714
精华 9
积分 4243
帖子 1553
威望 1918
阅读权限 150
注册 2005-3-9
状态 离线
 
发表于 2008-3-10 10:45  资料  个人空间  主页 短消息  加为好友  QQ
return之后执行,这个思路很妙~

顶部
brull
霸王龙
Rank: 6Rank: 6



UID 35270
精华 1
积分 1095
帖子 377
威望 433
阅读权限 70
注册 2005-8-16
状态 离线
 
发表于 2008-3-10 10:49  资料  个人空间  短消息  加为好友 
nice,看来对IE是要来点特殊的手段才能驯服它

顶部
lu5266
小恐龙
Rank: 3Rank: 3



UID 30085
精华 0
积分 310
帖子 81
威望 82
阅读权限 30
注册 2005-5-25
状态 离线
 
发表于 2008-3-10 11:40  资料  个人空间  主页 短消息  加为好友 
太巧了~~

顶部
myhome
霸王龙
Rank: 6Rank: 6



UID 40667
精华 0
积分 1599
帖子 538
威望 475
阅读权限 70
注册 2005-11-7
状态 离线
 
发表于 2008-3-10 13:49  资料  个人空间  短消息  加为好友 
太妙了!

ps:楼主 getElementsById 多写了个s

顶部
星辉一冷
大恐龙
Rank: 4


UID 2731
精华 0
积分 709
帖子 447
威望 431
阅读权限 50
注册 2003-5-11
来自 DcStudio
状态 离线
 
发表于 2008-3-10 15:02  资料  个人空间  主页 短消息  加为好友  QQ
Very Well, Very Strong!
UP!

顶部
singohuang
小恐龙
Rank: 3Rank: 3



UID 52902
精华 0
积分 422
帖子 217
威望 213
阅读权限 30
注册 2006-6-9
状态 离线
 
发表于 2008-3-10 17:11  资料  个人空间  短消息  加为好友 
收藏了~





要河蟹, 要有爱
顶部
starain
小虫
Rank: 1



UID 13901
精华 0
积分 32
帖子 4
威望 1
阅读权限 10
注册 2004-7-6
状态 离线
 
发表于 2008-3-11 08:22  资料  个人空间  短消息  加为好友 
太牛了

顶部
torycatkin
小恐龙
Rank: 3Rank: 3



UID 72343
精华 0
积分 203
帖子 98
威望 96
阅读权限 30
注册 2007-7-2
状态 离线
 
发表于 2008-3-13 15:37  资料  个人空间  短消息  加为好友 
嗯,是不错。。不过这个作为JAVA开发的应该经常用。。呵呵

顶部
ugxxx
霸王龙
Rank: 6Rank: 6
阿龍



UID 66274
精华 0
积分 1039
帖子 282
威望 270
阅读权限 70
注册 2007-3-13
来自 广州
状态 离线
 
发表于 2008-3-14 14:35  资料  个人空间  主页 短消息  加为好友  QQ
不錯..學習了...

顶部
cvpc
爬虫
Rank: 2



UID 22905
精华 0
积分 80
帖子 22
威望 44
阅读权限 20
注册 2005-1-24
状态 离线
 
发表于 2008-6-5 15:37  资料  个人空间  主页 短消息  加为好友  添加 cvpc 为MSN好友 通过MSN和 cvpc 交谈 QQ
帮你顶起来,让更多的人受益~





喜欢肥肥的客户端!
顶部
codecn
大恐龙
Rank: 4


UID 115
精华 1
积分 574
帖子 275
威望 300
阅读权限 50
注册 2003-2-7
状态 离线
 
发表于 2008-6-5 16:03  资料  个人空间  短消息  加为好友  QQ
不错..

顶部
btbtd
霸王龙
Rank: 6Rank: 6



UID 82191
精华 0
积分 1144
帖子 125
威望 107
阅读权限 70
注册 2008-1-23
来自 北京
状态 离线
 
发表于 2008-6-5 16:16  资料  个人空间  主页 短消息  加为好友  添加 btbtd 为MSN好友 通过MSN和 btbtd 交谈 QQ
呵呵, 学一招...





顶部
 



当前时区 GMT+8, 现在时间是 2010-7-31 04:43
苏ICP备05080427号

Powered by Discuz! 5.5.0  © 2001-2007 51JS.COM
Processed in 0.355595 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 无忧脚本 - Archiver