es6 发布-订阅模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6 发布-订阅模式相关的知识,希望对你有一定的参考价值。
class Event { constructor() { //保存事件列表 this.eventList = []; } on(key,fn){ if ( !this.eventList[ key ] ){ this.eventList[ key ] = []; } this.eventList[ key ].push( fn ); } trigger(){ var key = Array.prototype.shift.call( arguments ), fns = this.eventList[ key ]; if ( !fns || fns.length === 0 ){ return false; } for( var i = 0, fn; fn = fns[ i++ ]; ){ fn.apply( this, arguments ); } } } //继承 class Test extends Event { constructor() { super(); this.init(); } init(){ window.setTimeout(()=>{ this.trigger(‘test‘,‘word:123‘,‘key:test‘); },3000); } } let t = new Test(); t.on(‘test‘,(word,key)=>{ alert(word); alert(key); }); //重复注册 t.on(‘test‘,(word,key)=>{ alert(key); alert(word); });
以上是关于es6 发布-订阅模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)