码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式--------订阅/发布模式 (观察者)

时间:2020-07-28 14:40:21      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:each   设计   llb   全栈   func   call   this   off   null   

pub/sub 这个应该?家?到最?的设计模式了,
 
class Event{
constructor(){
this.callbacks = {}
}
$off(name){
this.callbacks[name] = null
}
$emit(name, args){
let cbs = this.callbacks[name]
if (cbs) {
cbs.forEach(c=>{
c.call(this, args)
})
}
}
$on(name, fn){
(this.callbacks[name] || (this.callbacks[name] = [])).push(fn)
}
}
let event = new Event()
event.$on(‘event1‘, function(arg){
console.log(‘事件1‘,arg)
})
event.$on(‘event1‘, function(arg){
console.log(‘??个时间1‘,arg)
})
event.$on(‘event2‘, function(arg){
 
console.log(‘事件2‘,arg)
})
event.$emit(‘event1‘,{name:‘开课吧‘})
event.$emit(‘event2‘,{name:‘全栈‘})
event.$off(‘event1‘)
event.$emit(‘event1‘,{name:‘开课吧‘})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

设计模式--------订阅/发布模式 (观察者)

标签:each   设计   llb   全栈   func   call   this   off   null   

原文地址:https://www.cnblogs.com/zhouyideboke/p/13390347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!