封装事件触发器(Emitter)
/**
* @class Emitter
* @description 事件监听器
*/
class Emitter {
/**
* 构造函数
*/
constructor() {
/**
* 事件
*/
this.events = {};
}
/**
* 监听事件
* @param {*} name 事件名称
* @param {*} callback 回调事件
*/
on(name, callback) {
if (!!this.events[name] === false) this.events[name] = [];
this.events[name].push(callback);
}
/**
* 触发事件
* @param {*} name 事件名称
* @param {...any} args 参数
*/
emit(name, ...args) {
let handlers = this.events[name];
if (!!handlers) handlers.forEach(handler => handler(...args));
}
/**
* 移除事件
* @param {*} name 事件名称
* @param {*} callback 回调事件
*/
remove(name, callback) {
if (this.events[name]) this.events[name] = this.events[name].filter(handler => handler !== callback);
}
}
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
CaptainTwo!
喜欢就支持一下吧