封装没有嵌套关系的组件之间通信

本文介绍了一个简单的事件监听器实现方式,包括事件注册、执行、移除及销毁等核心功能。通过实例展示了如何使用该事件监听器进行事件监听与触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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); 
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值