这不是原创文章,主要是写给自己看的。原文比较详细容易让人,我提取最简单最好理解的部分,便于我以后用到。参考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回来了, 我要揍他!

最新文章

  1. ubuntu用作开发办公平台的完美体验
  2. 海思H264解码库 hi_h264dec_w.dll 水印问题
  3. 浅谈sizeof
  4. Jquery表单序列化和AJAX全局事件
  5. Bootstrap页面布局14 - BS按钮群组
  6. UEditor上传功能
  7. 《Java程序设计》第二次实验报告
  8. weblogic性能调优参考
  9. centos6 pxe minimal install
  10. winform之回车执行某个按钮 以及Esc执行某个按钮
  11. Activity生命周期-Android
  12. 通过AJAX与ASP.NET结合实现的仿GridView增删改查功能
  13. 消息机制2 - Windows程序设计(SDK)005
  14. PAT 团体程序设计天梯赛-练习集 L1-003. 个位数统计
  15. BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
  16. 基于python创建一个简单的HTTP-WEB服务器
  17. 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试
  18. C语言 标准输入 清空缓存
  19. python恶俗古风诗自动生成器
  20. 【emWin】例程二十五:窗口对象——Iconview

热门文章

  1. SWIG和PInvoke学习(1)
  2. Spark checkpoint机制简述
  3. 图:无向图(Graph)基本方法及Dijkstra算法的实现 [Python]
  4. VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)
  5. bzoj2456 / P2397 yyy loves Maths VI (mode)
  6. ubinize的用法
  7. linux开启nscd服务缓存加速
  8. Flask 4 拓展
  9. 如何修改SQL Server 2008数据库服务器名称
  10. 智课雅思词汇---二十七、形容词后缀-ant/-ent