发布订阅
Posted liufeiran
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布订阅相关的知识,希望对你有一定的参考价值。
1 <script type="text/javascript"> 2 //发布 emit 订阅 on 女生失恋:[‘哭‘,‘购物‘,‘吃‘] 3 function Girl() 4 this._events = 5 6 Girl.prototype.on = function(eventName,callback) 7 if(this._events[eventName])//不是第一次 8 this._events[eventName].push(callback); //失恋:[cry,eat,shopping] 9 else 10 this._events[eventName] = [callback]; //失恋:[cry] 11 12 ; 13 Girl.prototype.emit = function(eventName,...args)//用剩余运算符[我,你,他],在参数里叫剩余运算符 14 //[].slice.call(arguments,1);都不理想 15 //Array.from(arguments).slice(1); 16 if(this._events[eventName]) 17 this._events[eventName].forEach(cb=>cb(...args));//在其他地方叫展开运算符 18 //this._events[eventName].forEach(cb=>cb.apply(this,args)); 19 20 ; 21 let girl = new Girl(); 22 let cry = (who)=>console.log(who + ‘哭‘);; 23 let shopping = (who)=>console.log(who + ‘购物‘);; 24 let eat = (who)=>console.log(who + ‘吃‘);; 25 girl.on(‘失恋‘,cry);//失恋:[cry] 26 girl.on(‘失恋‘,eat);//失恋:[cry,eat] 27 girl.on(‘失恋‘,shopping);//失恋:[cry,eat,shopping] 28 29 girl.emit(‘失恋‘,‘我‘); 30 31 //一对多 32 //a:[fn,fn,fn] 33 </script>
以上是关于发布订阅的主要内容,如果未能解决你的问题,请参考以下文章