注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿当的博客

世界是个游乐场

 
 
 

日志

 
 

自定义事件  

2010-12-06 22:49:00|  分类: Js |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自《高级javascript程序设计第二版》。

 

在看YUI的时候,本来对自定义事件的了解不是那么深的,但看了《高》之后,对这个功能有了更深入的了解。的确是个很棒的思路。

 

===============================================

 

function EventTarget(){

    this.handlers = {};

}

 

EventTarget.prototype = {

   constructor : EventTarget,

   adddHandler : function(type,handler){

       if (typeof this.handlers[type] == "undefined"){

          this.handlers[type] = [];

       }

       this.handlers[type].push(handler);

   },

   fire : function(event){

      if(!event.target){

        event.target = this;

      }

      if (this.handlers[event.type] instanceof Array){

         var handlers = this.handlers[event.type];

         for ( var i=0,len = handlers.length;i<len;i++){

            handlers[i](event);

         }

      }

   },

   removeHandler : function(type,handler){

       if (this.handlers[type] instance of Array){

          var handlers = this.handlers[type];

          for ( var i=0,len=handlers.length;i<len;i++){

             if (handlers[i] === handler){

                  break;

             }

          }

          handlers.splice(i,1);

       }

   }

};

 

 

function handleMessage(event){

    alert("Message received: " + event.message);

}

 

var target = new EventTarget();

 

target.addHandler("message",handleMessage);

 

target.fire({type : "message",message : "hello world"});

 

target.removeHandler("message",handleMessage);

 

 

function Person(name,age){

   EventTarget.call(this);

   this.name = name;

   this.age = age;

}

 

extend(Person,EventTarget);

 

Person.prototype.say = function(message){

    this.fire({type:"message",message:message});

}

 

var person = new Person("adang",26);

 

person.addHandler("message",handleMessage);

 

person.say("Hi there");

 

 

 

 

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018