H246802 / 30-days-challenge

30天每日打卡
4 stars 0 forks source link

day-24-自定义eventbus #24

Open H246802 opened 5 years ago

H246802 commented 5 years ago

写一个对象 Bus,提供 onemit 方法,on 实现监听,emit 实现触发,使用方式如下:

Bus.on('event', function(data) {
  console.log(data)
})

Bus.on('hi', function(data) {
  console.log(data)
})

Bus.emit('event', {name: 'hello'})
Bus.emit('hi', {to: 'hunger'})
Bus.emit('hi', {to: 'valley'})
H246802 commented 5 years ago
let Bus = {
  // 使用event存储 Bus.on 的函数
  event:{},
  on:function(name,fn){
    this.event[name] = fn
  },
  emit:function(name,param){
    this.event[name](param)
  }
}

Bus.on('event', function(data) {
  console.log(data)
})

Bus.on('hi', function(data) {
  console.log(data)
})

Bus.emit('event', {name: 'hello'})
Bus.emit('hi', {to: 'hunger'})
Bus.emit('hi', {to: 'valley'})