Skip to content
字数
523 字
阅读时间
3 分钟

概述

事件是您在编程时系统内发生的动作或者发生的事情,系统响应事件后,如果需要,您可以某种方式对事件做出回应。

如何自定义事件

目前实现自定义事件的方式共两种

  • Event()
  • CustomEvent()

Event()

javascript
const myEvent = new Event(eventName, eventOptions);

eventName : String 类型,必选项,表示事件的名称
eventOptions : Object 类型,事件的可选配置项

用法

js
const sendEvent = new Event("sendMsg")
document.addEventListener("sendMsg",print)
document.dispatchEvent(sendEvent)
function print() {
  console.log("内容色情低俗")
}
// result:内容色情低俗。

CustomEvent()

javascript
const myEvent = new CustomEvent(eventName, eventOptions);

eventName : String 类型,必选项,表示事件的名称
eventOptions : Object 类型,事件的可选配置项

用法

javascript
const sendEvent = new CustomEvent("sendMsg", {detail:{
  name: "mayoha"
}})
document.addEventListener("sendMsg",print)
document.dispatchEvent(sendEvent)
function print(e) {
  console.log(e.detail.name)
}

区别

通过上面两个简单的例子我们可以看出,Event 和 CustomEvent 最大的区别在于,CustomEvent 可以传递数据

此外,我们还得简单了解一下另外操作事件的两个方法——addEventListenerdispatchEvent

对事件的操作

addEventListener

顾名思义,这个方法的作用就是添加事件监听
当我们生成新的事件之后,得有这个方法进行监听,系统才能知道我们有没有触发该事件

javascript
target.addEventListener(type, listener, options);

target 可以是一个文档上的元素 Element,Document 和 Window 或者任何其他支持事件的对象
type:表示我们要监听事件的名称,必选项,注意名称要和事件名称保持一致
listener:一个函数,再事件被触发之后,必选项

options:可选项,对 listener 的一些配置,这里用不上,知道有这个东西就行了

dispatchEvent

触发被我们定义的事件

javascript
target.dispatchEvent(event)

target 同上
event:要被派发的事件对象

参考

原生js之DOM事件相关

一文带你掌握js自定义事件

Creating and triggering events - Event reference | MDN

贡献者

The avatar of contributor named as jiechen jiechen

页面历史

撰写