zoukankan      html  css  js  c++  java
  • 《JS设计模式笔记》 3,观察者模式

      

     1 <script type="text/javascript">
     2     //挂插着模式又叫发布订阅模式应该是最常用的模式
     3 
     4     //1,dom事件就是观察者模式,只要订阅了click事件,当点击div的时候,function click就会触发。
     5     div.onclick=function click() {
     6         alert("click");
     7     }
     8      
     9      //2 
    10      loadImage(imgAry,function(){
    11          Map.init();
    12          Gamer.init();
    13      });
    14      loadImage(imgAry,function(){
    15          Map.init();
    16          Gamer.init();
    17          Sound.Init();
    18      });
    19 
    20      loadImage.listen("ready",function(){
    21          Map.init();
    22      });
    23      loadImage.listen("ready",function(){
    24          Gamer.init();
    25      });
    26      loadImage.listen("ready",function(){
    27          Sound.init();
    28      });
    29      //3,
    30      Events=function(){
    31          var listen,log,obj,one,remove,trigger,__this;
    32          obj={};
    33          __this=this;
    34          listen=function(key,eventfn){
    35              var stack,_ref;
    36              stack=(_ref=obj[key])!=null?_ref:obj[key]=[];
    37              return stack.push(eventfn);
    38          };
    39          one=function(key,eventfn){
    40              remove(key);
    41              return listen(key,eventfn);
    42          };
    43          remove=function(key){
    44              var _ref;
    45              return (_ref==obj[key])!=null?_ref.length=0:void 0;
    46          };
    47          trigger=function(){
    48              var fn,stack,_i,_len,_ref,key;
    49              key=Array.prototype.shift.call(arguments);
    50              stack=(_ref=obj[key])!=null?_ref:obj[key]=[];
    51              for(_i=0,_len=stack.length;_i<_len;_i++){
    52                  return false;
    53              }
    54          };
    55          return{
    56              listen:listen,
    57              one:one,
    58              remove:remove,
    59              trigger:trigger
    60          };
    61      };
    62 
    63      var adultTV=Events();
    64      adultTV.listen("play",function(data){
    65          alert("今天XXXXX"+data.name);
    66      });
    67      adultTV.trigger("play",{"name":"XX"});
    68      </script>
  • 相关阅读:
    SqlServer存储过程
    SQL Server :DBLINK创建及使用
    jQuery控制TR的显示隐藏
    JAVA------22.git导出项目,启动项目
    JAVA------21.String转时间,并向前推进一天
    JAVA------20.经纬度转换省市区
    JAVA------20.图片中插文字和图片
    JAVA------19.生成二维码并插入logo
    JAVA------18.excel导出
    JAVA------17.charles(青花瓷)抓包工具,适用安卓
  • 原文地址:https://www.cnblogs.com/lvyongbo/p/4700124.html
Copyright © 2011-2022 走看看