无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(js 自定义事件) 详解如何在JavaScript中自定义事件 自定义事件在 JavaScript 中主要通过 Event() 和 CustomEvent() 构造函数来创建 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (06-18) 83次浏览 已收录 扫描二维码

(js 自定义事件) 详解如何在JavaScript中自定义事件

在JavaScript中自定义事件主要是通过JS原生的Event()构造函数和CustomEvent() 构造函数来创建。

Event()构造函数实例:

  • 语法:let myEvent = new Event(typeArg, eventInit);
  • 参数:
    • typeArg:DOMString 类型,表示创建事件的名称;
    • eventInit:可选配置项,包括:
      • bubbles:表示该事件是否冒泡。可选Boolean,默认为false;
      • cancelable:表示该事件能否被取消。可选Boolean,默认为false;
      • composed:指示事件是否会在影子DOM根节点之外触发侦听器。可选Boolean,默认为false;

CustomEvent()构造函数实例:

  • 语法:let myEvent = new CustomEvent(typeArg, eventInit);
  • 参数:
  • typeArg:DOMString 类型,表示创建事件的名称;
    • eventInit:可选配置项,包括:
      • detail:表示该事件中需要被传递的数据,在 EventListener 获取。可选Any,默认为null;
      • bubbles:表示该事件是否冒泡。可选Boolean,默认为false;
      • cancelable:表示该事件能否被取消。可选Boolean,默认为false;

使用示例:

// 创建事件
let myEvent = new CustomEvent("pingan", {
  detail: { name: "wangpingan" }
});

// 添加适当的事件监听器
window.addEventListener("pingan", e => {
  alert(`pingan事件触发,是 ${e.detail.name} 触发。`);
});
document.getElementById("leo2").addEventListener(
  "click", function () {
    // 派发事件
    window.dispatchEvent(myEvent);
  }
)
// 我们也可以给自定义事件添加属性
myEvent.age = 18;

Event() 和 CustomEvent() 的区别:

  • Event() 适合创建简单的自定义事件,而 CustomEvent() 支持参数传递的自定义事件,它支持 detail 参数,作为事件中需要被传递的数据,并在 EventListener 获取。

自定义事件的使用场景:事件模式本质上是观察者模式的实现,即能用观察者模式的地方,自然也能用事件模式。例如,当一个目标对象发生改变,需要通知多个观察者一同改变,或者在解耦多模块协作时。

示例代码和详细的使用案例可以参考该链接
(藏宝图碎片) 原神层岩巨渊藏宝图碎片在什么地方 藏宝图碎片和宝箱位置介绍 层岩巨渊藏宝图碎片寻宝活动 全网首发(图文详解1)
(idea tomcat 乱码) idea启动tomcat控制台中文乱码的三种情况解决 解决Idea启动Tomcat乱码问题的三个方法 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝