设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

查看: 8661|回复: 57

[原创] try finally 妙用,防止内存泄漏 [复制链接]

Rank: 4

升级  53.2%

注册时间
2006-12-11
威望
368
阅读权限
50
积分
766
帖子
329
精华
1
UID
61902
状态
当前离线
发表于 2008-3-8 19:57:03 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
一键分享 一键分享
<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的问题
       }
}


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

[ 本帖最后由 chpn 于 2008-3-10 09:41 编辑 ]
已有 4 人评分威望 收起 理由
月影 + 10 赞~
井底的蛙 + 3
dron + 10 非常棒!
winter + 10 构思巧妙

总评分: 威望 + 33   查看全部评分

无论走到哪里,我的家都只有一个。。那就是重庆。

超级版主

新手上路

Rank: 8Rank: 8

注册时间
2004-5-22
威望
3336
阅读权限
150
积分
6241
帖子
3329
精华
3
UID
11749
状态
当前离线
发表于 2008-3-8 20:35:20 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 查看个人网站

呵呵,很奇怪的写法。

  1. <script type="text/javascript">
  2. function Test() {
  3.     try {
  4.         return "函数Return了。";
  5.     } finally {
  6.         alert("Return 后仍然能执行");
  7.     }
  8. }
  9. alert(Test());
  10. </script>
复制代码运行代码另存代码
風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)

使用道具 举报

Rank: 6Rank: 6

升级  3.85%

注册时间
2006-4-22
威望
951
阅读权限
70
积分
1077
帖子
76
精华
2
UID
50656
状态
当前离线
发表于 2008-3-8 20:57:25 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
呵呵 手动垃圾回收啊

使用道具 举报

超级版主

5毛发一贴,千里不留行。

Rank: 8Rank: 8

注册时间
2007-2-27
威望
3584
阅读权限
150
积分
8408
帖子
3597
精华
12
UID
65747
状态
当前离线
发表于 2008-3-8 20:59:29 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
这个做法非常巧妙啊

使用道具 举报

霸王龙

爬虫

Rank: 6Rank: 6

升级  17.5%

注册时间
2006-6-29
威望
671
阅读权限
70
积分
1350
帖子
660
精华
1
UID
53786
状态
当前离线
发表于 2008-3-10 03:41:13 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
异常捕获用多了会不会也造成某些问题呢?:loveliness:
如果山不能来我们这边,我们就到山那边去吧!

使用道具 举报

Rank: 1

升级  82%

注册时间
2007-11-15
威望
13
阅读权限
10
积分
41
帖子
14
精华
0
UID
78910
状态
当前离线
发表于 2008-3-10 09:54:40 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 查看个人网站
不错, :victory:
http://www.hansir.cn

使用道具 举报

Rank: 8Rank: 8

注册时间
2004-11-9
威望
3569
阅读权限
150
积分
6663
帖子
3112
精华
4
UID
19294
状态
当前离线
发表于 2008-3-10 10:02:20 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
非常棒!
暂时遁去。

使用道具 举报

Rank: 3Rank: 3

升级  20.67%

注册时间
2003-7-19
威望
131
阅读权限
30
积分
262
帖子
135
精华
0
UID
4442
状态
当前离线
发表于 2008-3-10 10:36:04 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
不错,支持。

使用道具 举报

Rank: 8Rank: 8

注册时间
2005-3-9
威望
1952
阅读权限
150
积分
4347
帖子
1577
精华
9
UID
24714
状态
当前离线
发表于 2008-3-10 10:45:31 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
return之后执行,这个思路很妙~

使用道具 举报

Rank: 6Rank: 6

升级  5.4%

注册时间
2005-8-16
威望
434
阅读权限
70
积分
1108
帖子
379
精华
1
UID
35270
状态
当前离线
发表于 2008-3-10 10:49:07 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
nice,看来对IE是要来点特殊的手段才能驯服它

使用道具 举报

Rank: 3Rank: 3

升级  37%

注册时间
2005-5-25
威望
82
阅读权限
30
积分
311
帖子
82
精华
0
UID
30085
状态
当前离线
发表于 2008-3-10 11:40:48 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 查看个人网站
太巧了~~

使用道具 举报

Rank: 6Rank: 6

升级  30.1%

注册时间
2005-11-7
威望
475
阅读权限
70
积分
1602
帖子
538
精华
0
UID
40667
状态
当前离线
发表于 2008-3-10 13:49:37 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
太妙了!

ps:楼主 getElementsById 多写了个s

使用道具 举报

Rank: 4

升级  41.8%

注册时间
2003-5-11
威望
431
阅读权限
50
积分
709
帖子
448
精华
0
UID
2731
状态
当前离线
发表于 2008-3-10 15:02:59 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
Very Well, Very Strong!
UP!
:lol

使用道具 举报

Rank: 3Rank: 3

升级  74.67%

注册时间
2006-6-9
威望
213
阅读权限
30
积分
424
帖子
217
精华
0
UID
52902
状态
当前离线
发表于 2008-3-10 17:11:31 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
收藏了~
要河蟹, 要有爱

使用道具 举报

Rank: 1

升级  64%

注册时间
2004-7-6
威望
1
阅读权限
10
积分
32
帖子
4
精华
0
UID
13901
状态
当前离线
发表于 2008-3-11 08:22:57 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
太牛了

使用道具 举报

Rank: 3Rank: 3

升级  1%

注册时间
2007-7-2
威望
96
阅读权限
30
积分
203
帖子
98
精华
0
UID
72343
状态
当前离线
发表于 2008-3-13 15:37:01 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
嗯,是不错。。不过这个作为JAVA开发的应该经常用。。呵呵

使用道具 举报

霸王龙

阿龍

Rank: 6Rank: 6

升级  2%

注册时间
2007-3-13
威望
270
阅读权限
70
积分
1040
帖子
283
精华
0
UID
66274
状态
当前离线
发表于 2008-3-14 14:35:05 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
不錯..學習了...

使用道具 举报

Rank: 2

升级  31.33%

注册时间
2005-1-24
威望
48
阅读权限
20
积分
97
帖子
26
精华
0
UID
22905
状态
当前离线
发表于 2008-6-5 15:37:03 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
帮你顶起来,让更多的人受益~
喜欢肥肥的客户端!

使用道具 举报

Rank: 4

升级  18.2%

注册时间
2003-2-7
威望
307
阅读权限
50
积分
591
帖子
282
精华
1
UID
115
状态
当前离线
发表于 2008-6-5 16:03:36 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
不错..

使用道具 举报

Rank: 6Rank: 6

升级  21.1%

注册时间
2008-1-23
威望
131
阅读权限
70
积分
1422
帖子
150
精华
0
UID
82191
状态
当前离线
发表于 2008-6-5 16:16:43 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
呵呵, 学一招...

使用道具 举报

您需要登录后才可以回帖 登录 | 加入无忧

Archiver|手机版|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445  

GMT+8, 2012-2-7 21:37 , Processed in 0.066457 second(s), 15 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 1999-2011 无忧脚本

回顶部