# 发布订阅模式 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 例如浏览器中事件触发回调等。 ## 示例 ```js var Shop = {} // 发布对象 Shop.listener = {}; // 用来保存订阅者 // 发布操作 Shop.trigger = function(name){ this.listener[name].forEach(item => { item() }); } // 添加订阅者 Shop.listen = function(name, callback){ if(!this.listener[name]){ this.listener[name] = []; } this.listener[name].push(callback) } // 删除某类事件的订阅 Shop.remove = function(name){ this.listener[name] = []; } Shop.listen('a', function(){ console.log('a 11 is come'); }) Shop.listen('a', function () { console.log('a 22 is come'); }) Shop.listen('b', function(){ console.log('b is come'); }) Shop.listen('c', function(){ console.log('c is come'); }) Shop.trigger('a'); Shop.remove('a'); Shop.trigger('a'); ```