<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的問題
}
}
一個函數或方法中,其實有很多地方都需要這種選返回值,最後執行某些事的
來源:http://bbs.51js.com/viewthread.php?tid=76615&extra=page%3D1
讀取中...














0 意見:
張貼意見