let on = (eventName, callback) => {
window.addEventListener(eventName, callback)
}
on('my:event', () => {
alert('1')
})
on('my:event', () => {
alert('2')
})
on('my:event', () => {
alert('3')
})
window.dispatchEvent(new CustomEvent('my:event'))
为了避免事件被重复监听,我想在第二次调用的时候判断某个是否已经被监听,如果已经注册,则先removeEventListener旧的事件
//我想要的
let on = (eventName, callback) => {
if(/*判断eventName是否已监听*/) { //已添加监听器
//先remove监听器
window.addEventListener(eventName, callback)
} else { //未添加监听器
window.addEventListener(eventName, callback)
}
}
自己维护一个map吧,key就是target+eventName,value就是函数。on的时候检查一下map是否有记录