Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1103471
  • 博文数量: 1310
  • 博客积分: 3980
  • 博客等级: 中校
  • 技术积分: 8005
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-09 22:05
文章分类

全部博文(1310)

文章存档

2011年(1)

2008年(1309)

我的朋友

分类:

2008-11-09 17:24:05



觉得作者的思路实在绝妙,很佩服!以前也曾经对这样的问题很无奈,没想到居然还能有如此一招!
<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的问题
       }
}

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


Yemoo'S JS Blog 2008-06-18 14:58 发表评论
阅读(225) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~