利用WeakMap管理事件监听器

2024-04-10  本文已影响0人  姜治宇

当你需要为一组DOM元素添加监听器,并且希望这些监听器在元素被移除时自动清理时,可以使用WeakMap来存储这些监听器。因为当DOM元素被移除时,它们不再被引用,所以相关的监听器可以被垃圾回收。

const listeners = new WeakMap();

function addListener(element, event, handler) {
  const list = listeners.get(element) || [];
  list.push({ event, handler });
  listeners.set(element, list);
  element.addEventListener(event, handler);
}

function removeElement(element) {
  const list = listeners.get(element);
  if (list) {
    list.forEach(({ event, handler }) => {
      element.removeEventListener(event, handler);
    });
    listeners.delete(element);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读