let mEvent = null;
class _Event {
constructor() {
this.EVENTARR = [];
}
on(name, fun) { // 注册事件
if (name && name != undefined && (typeof fun === 'function')) {
this.EVENTARR.push({ name: name, fun: fun });
} else {
throw new Error('事件注册失败,请检查参数是否正确!');
}
}
emit(name, data) { //执行事件
this.EVENTARR.map((e) => {
if (e.name === name) {
e.fun(data);
}
});
}
remove(name) { //移除
if (!name) {
return;
}
this.EVENTARR.map((e, index) => {
if (e.name === name) {
this.EVENTARR = this.EVENTARR.slice(index, 1);
}
});
}
destory() { //销毁
this.EVENTARR = [];
}
}
function getInstance() {
if (!mEvent) {
mEvent = new _Event();
}
return mEvent;
}
module.exports = getInstance();
/**
*const Event = new _Event();
Event.on('click', (data) => {
console.log(data);
Event.remove('click')
});
setTimeout(() => {
Event.emit('click', 'data');
}, 1000);
*/
封装没有嵌套关系的组件之间通信
最新推荐文章于 2025-02-13 21:13:52 发布