自定义事件
作者:互联网
//新学的一个自定义事件方法
class MyEvent {
constructor() {
//给实例化对象添加一个’handle‘属性 值为数组,里面存放自己的函数 类似 let handle = { "myevnet":[fn1,fn2,fn3.....] };
this.handle = { };
}
//绑定(添加)事件 参数:事件名,方法名
addEvent(eventName, fn) {
//判断 如果这个事件不存在 给它变为一个空数组
if (typeof this.handle[eventName] === 'undefined') {
this.handle[eventName] = [];
}
//如果有的话就把fn这个方法放进数组
this.handle[eventName].push(fn);
}
//触发事件
trigger(eventName) {
//遍历 handle 里面对应的事件 让event (每一项即对应的方法)执行
this.handle[eventName].forEach(event => {
event && event();//存在并执行
})
}
//移出事件 参数:事件名,方法名
removeEvent(eventName, fn) {
//遍历 handle 里面的事件 如果里面的i === fn 则利用数组的splice方法删除fn 并break
for (let i = 0; i < this.handle[eventName].length; i++) {
if (this.handle[eventName][i] === fn) {
this.handle[eventName].splice(i, 1);
break;
}
}
}
}
let newEvent = new MyEvent();
//绑定事件
addEvent("myevent",fn1);
//触发事件
trigger("myevent");
//移出事件
removeEvent("myevent",fn2);
标签:handle,自定义,eventName,事件,event,fn,myevent 来源: https://www.cnblogs.com/jzbs/p/11850838.html