观察者模式

function EventTarget(){
     this.handlers = [];
}
EventTarget.prototype={
     constructor:EventTarget,
     addHandler: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] instanceof 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 handlerMessage(event){//观察者1
     alert("Message receive:"+event.message);
}
function handlerMessage2(event){//观察者2
     alert("Message2 receive:"+event.message);
}
var 主体 = new EventTarget();
主体.addHandler("message",handlerMessage);
主体.addHandler("message",handlerMessage2);
主体.fire({type:'message',message:'hello world'});
主体.removeHandler("message",handlerMessage2);
主体.fire({type:'message',message:'hello world'});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值