一个简单的观察者模式的JS实现
2024-09-18 04:48:22
这不是原创文章,主要是写给自己看的。原文比较详细容易让人,我提取最简单最好理解的部分,便于我以后用到。参考http://www.cnblogs.com/TomXu/archive/2012/03/02/2355128.html。
function Observer(){
this.fns=[];
}
Observer.prototype={
//订阅
subscribe:function(fn){
this.fns.push(fn);
},
//退订
unsubscribe:function(fn){
this.fns=this.fns.filter(
function(el){
if(el!==fn){
return true;
}
}
)
},
//发布
update:function(o,thisObj){
var scope=thisObj || window;
this.fns.forEach(
function(el){
el.call(scope,o);
});
}
}
var o=new Observer;
var f1=function(data){
console.log('Robbin: ' + data + ', 赶紧干活了!');
};
var f2 = function (data) {
console.log('Randall: ' + data + ', 找他加点工资去!');
};
var f3 = function (data) {
console.log('Li: ' + data + ', 我要揍他!');
};
//f1,f2,f3订阅了
o.subscribe(f1);
o.subscribe(f2);
o.subscribe(f3);
//f1取消了订阅
o.unsubscribe(f1);
//发布
o.update('Tom回来了'); //输出结果
//Randall: Tom回来了, 找他加点工资去!
//Li: Tom回来了, 我要揍他!
最新文章
- ubuntu用作开发办公平台的完美体验
- 海思H264解码库 hi_h264dec_w.dll 水印问题
- 浅谈sizeof
- Jquery表单序列化和AJAX全局事件
- Bootstrap页面布局14 - BS按钮群组
- UEditor上传功能
- 《Java程序设计》第二次实验报告
- weblogic性能调优参考
- centos6 pxe minimal install
- winform之回车执行某个按钮 以及Esc执行某个按钮
- Activity生命周期-Android
- 通过AJAX与ASP.NET结合实现的仿GridView增删改查功能
- 消息机制2 - Windows程序设计(SDK)005
- PAT 团体程序设计天梯赛-练习集 L1-003. 个位数统计
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
- 基于python创建一个简单的HTTP-WEB服务器
- 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试
- C语言 标准输入 清空缓存
- python恶俗古风诗自动生成器
- 【emWin】例程二十五:窗口对象——Iconview