(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;
- eventInit:可选配置项,包括:
使用示例:
// 创建事件
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)