var emitter = {
list: {},
on: function(key, fn) {
if(!this.list[key]) {
this.list[key] = [];
}
this.list[key].push(fn);
},
emit: function() {
var key = Array.prototype.shift.call(arguments),
fns = this.list[key];
if(!fns && fns.length === 0) {
for(var i = 0, fn; fn = fns[i++];) {
fn.apply(this, arguments);
}
}
}
}
var installEmitter = function(obj) {
for(var item in obj) {
obj[item] = emitter[item];
}
}
观察者模式
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 原生KVO的实现依赖于强大的runtime运行时机制,实现原理大致为:当观察某对象A的属性时,会动态的创建这...
- 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配器模式、外观模式、组合模式 ...
- 状态模式 不需要总结, 一句话就是说, 在不同的状态下, 执行不同的操作.例如, 转发按钮的onClick处理, ...
- 观察者模式 Subject被观察者:能够动态地增加、取消观察者,职责是管理观察者并通知观察者。Observer观察...