Open RainZhai opened 5 years ago
发布订阅者模式,消息机制,解决主体对象与观察者之间功能耦合。
var observer = (function(){ var _msg = {}; return { regist: function(type, fn){ console.log(_msg[type]) if(typeof _msg[type] === 'undefined'){ _msg[type] = [fn] }else{ _msg[type].push(fn) } }, fire: function(type, args){ if(!_msg[type]) return; var events = { type:type, args: args || {} }, i = 0, len = _msg[type].length; for(; i< len; i++){ _msg[type][i].call(this, events) } }, remove: function(type, fn){ if(_msg[type] instanceof Array){ var i = _msg[type].length -1; for(; i>0; i--){ _msg[type][i] === fn && _msg[type].splice(i,1); } } } } })(); observer.regist('test', (e)=>{console.log(e.type, e.args.msg)}) observer.regist('test', (e)=>{console.log(e.type, e.args.msg)}) observer.remove('test', (e)=>{console.log(e.type, e.args.msg)}) observer.fire('test', {msg: 'sssss'})
发布订阅者模式,消息机制,解决主体对象与观察者之间功能耦合。