javascript 实现一个简单的EventEmitter

实现一个EventEmitter,主要是事件的绑定on和发送emit。
相同的事件名是会被分别触发的。

function EventEmitter() {
    //listeners是一个对象,key对应的是event,value对应的是函数的数组。
    this.listeners = {}
}

EventEmitter.prototype.on = function(event, func) {
    try {
        //function加入数组
        this.listeners[event].push(func)
    } catch (error) {
        //如果listeners不是数组,则定义数组,并把第一个function加入
        this.listeners[event] = [func]
    }
}

EventEmitter.prototype.emit = function(event, ...args) {
    if (this.listeners[event]) {
        this.listeners[event].forEach(func => {
            // func.apply(null, args)
            func(...args)
        });
    }
}


const ee = new EventEmitter()
ee.on('some_event', (...args) => {
    console.log('some event shift', ...args)
})
ee.on('some_event', (...args) => {
    console.log('some event shift222', ...args)
})
ee.emit('some_event', 'abc', '123')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值