我目前正在一个有长生活页面(LLP)的项目中工作,这让我担心性能和内存泄漏。
重新审视一些material at MDN,我发现这可能会导致内存泄漏:
function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
this.style.backgroundColor = 'red';
};
}
起初我不明白为什么,但很容易找到很多解释。我在代码项目中找到了article,这是question和Douglas Crockford的article中更详细的解释。
现在我的问题是:
据我所知,这个特定的漏洞是 IE-only bug ,这是正确的吗?而且,更重要的是:直到Bill叔叔的公司我们的心爱的蓝色浏览器的哪个版本我应该担心这个泄漏?
关于最后一个问题的可靠参考是可取的。
也许我错了,但我认为对事件使用'新'标准化界面,我们不会遇到同样的问题:
function addHandler() {
var el = document.getElementById('el');
el.addEventListener('click', function() {
this.style.backgroundColor = 'red';
});
}
由于没有直接分配,我认为这解决了这个问题。但是,这个API只是IE9 +,让我想知道我们是否会遇到库的回退问题,比如jQuery:
var $el = $('.some-el');
$el.on('click', function(){
// ...
});
我对jQuery内部的了解不足以说明这段代码在IE8上做了什么 - 。