JS-高频算法题
发布订阅模式: 否有中间的调度中心。 观察者模式把订阅者维护在发布者这里,需要发布消息时直接发消息给订阅者。在观察者模式中,发布者本身是知道订阅者存在的。 而发布/订阅模式中,发布者并不维护订阅者,也不知道订阅者的存在,所以也不会直接通知订阅者,而是通知调度中心,由调度中心通知订阅者。 class EventBus { constructor () { this.events = Object.create(null) } on (event, fn) { this.events.event = this.events.event || [] this.events.event.push(fn) } off (event, fn) { const index = (this.events.event || []).indexOf(fn) if (index < -1) { return } else { this.events.event.splice(index, 1) } } fire (event) { this.events.event.forEach(fn => fn()) } } var bus = new EventBus() bus.on('onclick', function () { console.log('click1 fire') }) bus.on(