Javascript 关闭内存泄漏并修复
通过,以下代码会导致内存泄漏:Javascript 关闭内存泄漏并修复,javascript,memory-leaks,closures,Javascript,Memory Leaks,Closures,通过,以下代码会导致内存泄漏: function addHandler() { var el = document.getElementById('el'); el.onclick = function() { el.style.backgroundColor = 'red'; }; } 由于onclick函数中未引用el,下列修改后的代码是否不会导致内存泄漏 function addHandler() { var el = document.getElementByI
function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
el.style.backgroundColor = 'red';
};
}
由于onclick
函数中未引用el
,下列修改后的代码是否不会导致内存泄漏
function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
this.style.backgroundColor = 'red';
};
}
是的,可以防止内存泄漏,通过舍弃局部变量
el
并直接指定元素的onclick
属性,您可以更加简洁:
function addHandler(){
document.getElementById('el').onclick = function(){
this.style.backgroundColor = 'red';
};
}
因此,在
onclick
回调中,this
引用了执行单击事件的元素本身,因此使用this
来设置单击时元素的样式(即backgroundColor
)很简单 您仍然在使用一个变量,this
,在本例中,如果您是这样问的话。还要确保你理解这个
和自我
之间的区别。谢天谢地,很快就不会有Internet Explorer了。如今,浏览器可以文明地处理垃圾收集。这段代码只会在IE中造成漏洞,而在几年前写这篇文章时,IE已经过时了。别担心。