发布订阅模式不是一个死的机制,他是一种思想,一种写代码的形式;主要为了处理一对多的场景,应用于不一样状况下的不一样函数的调用,this很重要编程
手动进行模拟浏览器事件机制bootstrap

改变this指向设计模式
处理顺序问题的,其实根本就是处理IE事件池乱序问题,那么咱们就不能用ie的事件池进行,咱们模拟一个事件池(利用发布订阅的思想来模拟咱们的事件池)promise
// 发布 emit 订阅 on {} function Girl() { this._events = {} } Girl.prototype.on = function (eventName,callback) { //这里判断他是否是第一次添加(订阅) if(this._events[eventName]){ this._events[eventName].push(callback); }else{ this._events[eventName] = [callback] } }; Girl.prototype.emit = function (eventName,...args) { if(this._events[eventName]){ this._events[eventName].forEach(cb=>cb(...args)); } }; let cry = (who) =>{console.log(who+'哭');}; let shopping = (who) =>{console.log(who+'购物');}; let eat = (who) =>{console.log(who+'吃');}; let smile=(who)=>{console.log(who+'笑')}; let girl1 = new Girl(); girl1.on('失恋',cry); girl1.on('失恋',eat); girl1.on('失恋',shopping); girl1.emit('失恋','小明'); let girl2 = new Girl(); girl2.on('恋爱',shopping); girl2.on('恋爱',smile); girl2.emit('恋爱','小华');