• 发布/订阅模式


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>发布&订阅模式</title>
    <script>
    var PubSub = {
      subscribe: function (ev, callback) {
            // 创建 _callbacks 对象,除非它已经存在了
            var calls = this._callbacks || (this._callbacks = {});
            
            // 针对给定的事件 key 创建一个数组,除非这个数组已经存在
            // 然后将毁掉函数追加到这个数组中
            (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback);
            return this;
        },
        
        publish: function () {
            // 将 arguments 对象转化为真正的数组
            var args = Array.prototype.slice.call(arguments, 0);
            
            // 拿出第 1 个参数,即事件名称
            var ev = args.shift();
            
            // 如果不存在,_callbacks 对象,则返回
            // 或者如果不包含给定事件对应的数组
            var list, calls, i, l;
            if (!(calls = this._callbacks)) return this;
            if (!(list = this._callbacks[ev])) return this;
            
            // 触发回调
            for (var i = 0, l = list.length; i < l; i++) {
                list[i].apply(this, args);
            }
            return this;
        }
    };
    
    // 使用方法
    PubSub.subscribe('wem', function () {
        alert('Wem');
    });
    
    PubSub.publish('wem');
    </script>
    </head>
    
    <body>
    </body>
    </html>
  • 相关阅读:
    PCB设计流程
    第一次PCB画板实战MiniDVPart1/3
    程序人生
    MCU死掉了
    一花一世界,一码一人生,谓之程序人生
    神船·神舟
    程序猿的选择
    android得到strings.xml文件中的内容
    Android特效 五种Toast详解
    Java字符串转换为日期和时间比较大小
  • 原文地址:https://www.cnblogs.com/baie/p/2985223.html
Copyright © 2020-2023  润新知