观察者模式
2013-10-31 15:44
239 查看
function EventTarget(){ this.handlers = []; } EventTarget.prototype={ constructor:EventTarget, addHandler:function(type,handler){ if(typ 4000 eof 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'});
相关文章推荐
- 十四项神奇心理定律
- RFC 3286 - An Introduction to the Stream Control Transmission Pr
- 最省费用
- CSS3 Transition介绍
- Android JB版本如何实现camera插值
- Yii url重写自定义url显示样式
- jetty的server创建与启动
- Binder
- Dynamic Forking of Win32 EXE
- MongoDB常用操作
- 关于hadoop学习常识
- 工厂模式与jquery
- myeclipse 10 安装Fat jar打包插件以及如何使用fat打包工具
- Wireshark图解教程
- 【FastReport.Net系列Function】
- 一个有潜在危险的要求。从客户端中检测到......[解决方案]
- OpenCV学习——眼部识别算法实现
- 如何获取Web页面中radio按钮的值
- 《关于我们-合作》页面设计问题
- 数组指针和指针数组的区别