JavaScript题目要求实现一个事件监听器Event 类,支持下列方法 addEventlistener(eventName: string,listener: function) :监听事件,当事件触发时执行回调函数 removeEventlistener (eventName: string,listener: function):移除监听事件 addEventlistenerOnce(eventName: string,listener: function):监听事件,当事件触发时执行回调函数并只执行一次回调函数 removeAll(eventName:string) 移除监听事件的所有回调函数 emit(eventName) 触发事件,执行回调函数 其中参数eventName为事件名,listener为事件触发后执行的回调函数 系统将自动执行你实现的Event类中的函数,校验是否实现以上功能 注意:系统通过执行函数,将控制台输出信息与测试用例进行比对,以验证函数的正确。所以函数内请不要添加输出控制台信息的代码,比如 Javascript 的console.log
时间: 2024-04-21 20:23:14 浏览: 157
您可以按照以下方式实现一个事件监听器Event类:
```javascript
class Event {
constructor() {
this.listeners = {};
}
addEventListener(eventName, listener) {
if (!this.listeners[eventName]) {
this.listeners[eventName] = [];
}
this.listeners[eventName].push(listener);
}
removeEventListener(eventName, listener) {
if (this.listeners[eventName]) {
const index = this.listeners[eventName].indexOf(listener);
if (index !== -1) {
this.listeners[eventName].splice(index, 1);
}
}
}
addEventListenerOnce(eventName, listener) {
const onceListener = () => {
listener();
this.removeEventListener(eventName, onceListener);
};
this.addEventListener(eventName, onceListener);
}
removeAll(eventName) {
delete this.listeners[eventName];
}
emit(eventName) {
if (this.listeners[eventName]) {
this.listeners[eventName].forEach(listener => listener());
}
}
}
```
这样,您就可以使用Event类的方法来实现事件的监听、移除监听、只执行一次监听回调函数、移除所有监听回调函数以及触发事件了。希望以上代码能够满足您的需求。
阅读全文