发布-订阅模式(自定义事件)02——node中-绑定事件和触发事件

发布-订阅模式(自定义事件)02——node中-绑定事件和触发事件

var obj = {};
// 绑定事件
obj.bindEvent = function(eventName, eventFn) {
  this[eventName] = this[eventName] || [];
  // obj.hello = []
  // obj.nihao = []
  this[eventName].push(eventFn);
  // obj.hello = [function() { console.log('hello1'); }, function() { console.log('hello2'); }]
  // obj.hihao = [function() { console.log('nihao1'); }]
}
// 触发事件
obj.fireEvent = function(eventName) {
  // 触发eventName事件绑定的函数
  let fns = this[eventName];
  fns.forEach(fn=>{
    fn();
  });
}
// 使用obj绑定事件
obj.bindEvent('hello', function() { console.log('hello1'); })
obj.bindEvent('hello', function() { console.log('hello2'); })
obj.bindEvent('nihao', function() { console.log('nihao1'); })
// 使用obj触发事件
obj.fireEvent('nihao');
// 自己实现发布订阅模式
let obj = {}
// 事件绑定
obj.bindEvent = function (eventName, eventCallback) {
  this.listener = this.listener || {}
  this.listener[eventName] = this.listener[eventName] || []
  this.listener[eventName].push(eventCallback)
}
// 事件触发
obj.fireEvent = function (eventName) {
  let eventCallbacks = this.listener[eventName]
  eventCallbacks.forEach(callback => {
    callback()
  })
}
obj.bindEvent('hello', () => {console.log('hello')})
obj.bindEvent('hello', () => {console.log('nihao')})
//obj.fireEvent('hello')
obj.bindEvent('msg', () => {console.log('tom')})
obj.fireEvent('msg')

效果1

在这里插入图片描述

效果2

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值