使用JavaScript实现一个事件监听器Event类,addEventlistener(eventName:string,listener:function):监听事件,当事件触发时执行回调函数
时间: 2024-04-17 08:25:17 浏览: 145
以下是一个使用JavaScript实现的简单事件监听器 `Event` 类:
```javascript
class {
constructor() {
this.eventMap = Map();
}
addEventListener(eventName, listener) {
if (!this.eventMap.has(eventName)) this.eventMap.set(eventName, []);
}
this.eventMap.get(eventName).push(listener);
}
triggerEvent(eventName, ...args) {
const listeners = this.eventMap.get(eventName);
if (listeners) {
listeners.forEach((listener) => listener(...args));
}
}
removeEventListener(eventName, listener) {
const listeners = this.eventMap.get(eventName);
if (listeners) {
const index = listeners.indexOf(listener);
if (index !== -1) {
listeners.splice(index, 1);
}
}
}
}
```
在这个示例中,我们定义了一个 `Event` 类,它包含了三个方法:
- `addEventListener(eventName, listener)`:用于向特定的事件名称添加监听器。如果事件名称不存在,则创建一个新的事件数组,并将监听器添加到数组中。
- `triggerEvent(eventName, ...args)`:用于触发特定的事件,并将参数传递给该事件的所有监听器回调函数。
- `removeEventListener(eventName, listener)`:用于从特定的事件名称中移除指定的监听器。
您可以使用以下代码来测试 `Event` 类的使用:
```javascript
const event = new Event();
function handleEvent1() {
console.log('Event 1 is triggered');
}
function handleEvent2(name) {
console.log(`Event 2 is triggered by ${name}`);
}
event.addEventListener('event1', handleEvent1);
event.addEventListener('event2', handleEvent2);
event.triggerEvent('event1'); // 输出 "Event 1 is triggered"
event.triggerEvent('event2', 'John'); // 输出 "Event 2 is triggered by John"
event.removeEventListener('event1', handleEvent1);
event.triggerEvent('event1'); // 没有输出,因为事件 1 的监听器已被移除
```
这是一个简单的事件监听器实现,您可以根据需求进行扩展和改进。
阅读全文