http://www.ibm.com/developerworks/web/library/wa-memleak/在此链接上,清单 5 描述了 obj 是对 dom 元素的引用,并且 dom 元素具有对 obj 的引用的情况,并且因此会导致内存泄漏。我正在努力查看代码中的什么使 DOM 元素具有对 obj 的引用。有人可以向我解释吗?
取自页面:
在清单 5 中,您会看到一个闭包,其中 JavaScript 对象 (obj) 包含对 DOM 对象的引用(由 id "element" 引用)。反过来,DOM 元素具有对 JavaScript obj 的引用。JavaScript 对象和 DOM 对象之间产生的循环引用会导致内存泄漏。
清单 5. 事件处理内存泄漏模式
<html>
<body>
<script type="text/javascript">
document.write("Program to illustrate memory leak via closure");
window.onload=function outerFunction(){
var obj = document.getElementById("element");
obj.onclick=function innerFunction(){
alert("Hi! I will leak");
};
obj.bigString=new Array(1000).join(new Array(2000).join("XXXXX"));
// This is used to make the leak significant
};
</script>
<button id="element">Click Me</button>
</body>
</html>