const myEvent = {
eventMap: {},
addEventListener: function (eventName, callback) {
if (this.eventMap[eventName]) {
this.eventMap[eventName].push(callback);
} else {
this.eventMap[eventName] = [callback];
}
},
emit: function (eventName, ...args) {
if (this.eventMap[eventName]) {
this.eventMap[eventName].forEach(callback => {
callback(...args);
});
}
},
clearEventListener: function (eventName) {
delete this.eventMap[eventName]
}
}
用例
// 添加事件监听器
myEvent.addEventListener("click", function (message) {
console.log("Clicked:", message);
});
// 再次添加相同事件监听器
myEvent.addEventListener("click", function (message) {
console.log("Clicked again:", message);
});
// 触发事件
myEvent.emit("click", "Button 1 clicked");
// 清除特定事件的所有监听器
myEvent.clearEventListener("click");
// 再次触发事件,但不会有任何输出
myEvent.emit("click", "Button 2 clicked");