zoukankan      html  css  js  c++  java
  • Pub/Sub模式

     1 var PubSub = {
     2     subscribe: function(ev, callback) {
     3         //创建 _callbacks 对象,除非它已经存在了
     4         var calls = this._callbacks || (this._callbacks = {});
     5         //针对给定的事件 ev 创建一个数组,除非这个数组已经存在
     6         //然后将回调函数追加到这个数组中
     7         (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
     8         return this;
     9     },
    10     publish: function() {
    11         //将 arguments 对象转换为真正的数组
    12         var args = Array.prototype.slice.call(arguments, 0);
    13         //拿出第1个参数,即事件名称
    14         var ev = args.shift();
    15 
    16         //如果不存在 _callbacks 对象,则返回
    17         //或者如果不包含给定事件对应的数组
    18         var list, calls, i, l;
    19         if (!(calls = this._callbacks)) return this;
    20         if (!(list = this._callbacks[ev])) return this;
    21 
    22         //触发回调
    23         for (i = 0, l = list.length; i < l; i++) {
    24             list[i].apply(this, args);
    25         }
    26         return this;
    27     }
    28 };
    29 
    30 //使用方法
    31 PubSub.subscribe("wem", function() {
    32     alert("Wem!");
    33 });
    34 
    35 PubSub.publish("wem");
  • 相关阅读:
    第十九天:类和对象
    第十五天:模块
    十四天:匿名函数
    十四天作业
    第十三天:迭代器、递归
    十二天:闭包和装饰器
    一个炒鸡简单的购物车
    十一天
    第十天
    第十天作业
  • 原文地址:https://www.cnblogs.com/qzsonline/p/2618272.html
Copyright © 2011-2022 走看看