zoukankan      html  css  js  c++  java
  • ie6内存泄漏问题的解决

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


    一个函数或方法中,其实有很多地方都需要这种选返回值,最后执行某些事的
  • 相关阅读:
    Git学习-创建版本库
    使用Vim编辑器,如何退出
    设置既定目录的命令提示符
    字符数组和字符串
    一波杂乱的分享
    全国软件设计大赛C/C++语言练习
    HDU 1720、1062、2104、1064、2734、1170、1197、2629
    hdu 2000-2010 ACM
    HDU——算法练习1000 1089-1096
    爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)
  • 原文地址:https://www.cnblogs.com/rayking/p/1250482.html
Copyright © 2011-2022 走看看