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");

  • 相关阅读:
    事件记录
    C++和extern C
    中断控制器
    NAND FLASH控制器
    MMU实验
    存储管理器实验
    GPIO实验
    linux与Windows使用编译区别及makefile文件编写
    ubuntu如何为获得root权限
    VI常用命令及linux下软件
  • 原文地址:https://www.cnblogs.com/cly84920/p/4426634.html
Copyright © 2011-2022 走看看