实现一个事件监听器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 11:23:15 浏览: 156
addEventListener()和removeEventListener()追加事件和删除追加事件
以下是Event类的实现:
```python
class Event:
def __init__(self):
self.listeners = {}
self.once_listeners = {}
def addEventListener(self, eventName, listener):
if eventName not in self.listeners:
self.listeners[eventName] = []
self.listeners[eventName].append(listener)
def removeEventListener(self, eventName, listener):
if eventName in self.listeners:
self.listeners[eventName].remove(listener)
def addEventListenerOnce(self, eventName, listener):
if eventName not in self.once_listeners:
self.once_listeners[eventName] = []
self.once_listeners[eventName].append(listener)
def removeAll(self, eventName):
if eventName in self.listeners:
del self.listeners[eventName]
if eventName in self.once_listeners:
del self.once_listeners[eventName]
def emit(self, eventName):
if eventName in self.listeners:
for listener in self.listeners[eventName]:
listener()
del self.listeners[eventName]
if eventName in self.once_listeners:
for listener in self.once_listeners[eventName]:
listener()
del self.once_listeners[eventName]
```
请注意,这是一个Python代码示例。你可以将该代码复制到你的项目中并在其他地方使用它。
阅读全文