实现一个事件监听器Event类,用javascript
时间: 2024-04-17 13:25:57 浏览: 181
kktix-event-listener
以下是一个简单的JavaScript代码示例,用于实现一个事件监听器Event类:
```javascript
class Event {
constructor() {
this.listeners = {};
}
on(eventName, callback) {
if (!this.listeners[eventName]) {
this.listeners[eventName] = [];
}
this.listeners[eventName].push(callback);
}
emit(eventName, data) {
const eventListeners = this.listeners[eventName];
if (eventListeners) {
eventListeners.forEach(callback => {
callback(data);
});
}
}
off(eventName, callback) {
const eventListeners = this.listeners[eventName];
if (eventListeners) {
this.listeners[eventName] = eventListeners.filter(cb => cb !== callback);
}
}
}
```
上述代码定义了一个Event类,具有以下方法:
- `on(eventName, callback)`:将事件监听器添加到指定的事件名上。
- `emit(eventName, data)`:触发指定事件名的所有监听器,并传递数据给监听器回调函数。
- `off(eventName, callback)`:从指定事件名上移除指定的监听器。
你可以创建一个Event实例,并使用该实例的`on`方法添加监听器,然后使用`emit`方法触发事件,并且使用`off`方法移除不需要的监听器。
以下是一个使用示例:
```javascript
const event = new Event();
// 添加事件监听器
event.on('click', data => {
console.log('点击事件触发了:', data);
});
event.on('hover', () => {
console.log('鼠标悬停事件触发了');
});
// 触发事件
event.emit('click', '按钮');
event.emit('hover');
// 移除事件监听器
event.off('click');
```
这个示例中,我们创建了一个`event`实例并添加了两个事件监听器。然后,我们通过调用`emit`方法触发了两个事件,并传递了一些数据。最后,我们使用`off`方法移除了`click`事件的监听器。
阅读全文