zoukankan      html  css  js  c++  java
  • 自定义事件

    转自《高级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");

  • 相关阅读:
    13.2 抽像类与体类(Abstract & Concrete Classes) 简单
    13.3 深度隔离的界面(Deeply Parted interface) 简单
    计算天数(C++)_学习 简单
    13.1.2 纯虚函数(Pure Virutal Functions) 简单
    C++ operator关键字(重载操作符) 简单
    二月一共多少天 简单
    重载运算符操作_学习 简单
    计算两个日期之间的天数(C++) 简单
    1.2 连接信号和响应函数 简单
    用Android手机做台式机无线网卡
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426634.html
Copyright © 2011-2022 走看看