假设我需要在以下每个节点上添加相同的事件侦听器:
function handler(e) { ... }
var clickMe = document.querySelectorAll('.click-me');
for (var i = 0; i < clickMe.length; i++) {
clickMe[i].addEventListener('click', handler);
}
在这种情况下,内存会增加吗?如果答案是肯定的,为什么?我在每一个中都使用相同的函数引用。是因为在引擎盖下它会执行以下操作:
class Div {
listeners = {
click: []
}
addEventListener(name, handler) {
this.listeners[name].push(handler)
}
}
这会导致数组变大吗?
我知道我们应该使用事件委托,但这不是我的问题。问题是,为什么是这种情况? (我不是在谈论可以随时间增加的动态DOM节点,而只是在内存方面)