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>
  • 相关阅读:
    6.1 tar:打包备份
    6.3-4 zip、unzip
    6.5 scp:远程文件复制
    S7 Linux用户管理及用户信息查询命令
    7.6 passwd:修改用户密码
    7.2-5 usermod
    DES
    FreeRTOS笔记
    第4章 裸机系统和多任务系统
    第008课_第1个ARM落版程序及引申
  • 原文地址:https://www.cnblogs.com/lvyongbo/p/4700124.html
Copyright © 2011-2022 走看看