美文网首页
利用WeakMap管理事件监听器

利用WeakMap管理事件监听器

作者: 姜治宇 | 来源:发表于2024-04-10 16:08 被阅读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);
  }
}

相关文章

  • Web笔记-Listener

    事件源、事件、监听器 事件源:发生事件的对象 事件:事件封装了事件源,方便监听器的某个方法获取到事件源对象 监听器...

  • [Intervention] Unable to prevent

    描述:违反:没有添加被动事件监听器来阻止’touchstart’事件,请考虑添加事件管理者’passive’,以使...

  • 基于SpringBoot和注解实现优雅的事件监听器

    1. 了解事件监听器 事件监听器包括3个部分,事件、事件源、事件监听器。 事件,主要用于传递参数,例如用户登录,可...

  • laravel Event 事件使用

    Event的使用主要分为三步: ①注册事件监听器映射关系 ②定义监听器 ③触发事件 ①注册事件监听器映射关系 在a...

  • spring源码事件监听

    spring的事件监听机制,主要利用了监听者设计模式,那如何spring自带的事件和自定义的事件是如何触发监听器的...

  • Cocos2d-x 3.x 版本事件机制-EventListen

    这个类管理着所有的事件监听器,其分为两大类,一类是绑定在node上的事件,其监听器的执行优先级取决于node在场景...

  • 事件委托

    使用事件委托技术能让你避免对特定的每个节点添加事件监听器;相反,事件监听器是被添加到它们的父元素上。事件监听器会分...

  • SpringBoot--监听器解析

    监听器模式 监听器模式有要素 事件 监听器 广播器 触发机制 系统监听器 监听器 ApplicationListe...

  • day08

    监听器和邮箱服务 第1章 监听器介绍 监听器:监听事件源,根据事件源上发生事件,做出相应的处理。 1.2 监听机制...

  • 事件

    事件 -- 监听器 -- 文章点击率 Laravel 5.3 事件 和 监听器 事件类 存放位置:一般在 app/...

网友评论

      本文标题:利用WeakMap管理事件监听器

      本文链接:https://www.haomeiwen.com/subject/cegqxjtx.html