重写事件抛发接收机制原理_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重写事件抛发接收机制原理关于js中大事侦听和抛发机制的一些基础容易重构,通过这个容易重构了解中介者模式的工作方式,以下就是要做的容易重构计划思路:创建emittertarget类和emitterevent类。emittertarget类主要用法了中介模式+观看者模式其中emittertarget类的实例化属性list充当中介角色,每当执行add办法时,给emittertarget类的实例化对象注册大事名称及触发函数;每当该对象执行remove办法时,从list列表中移除注册的大事及触发函数;dispatchevent办法主要是发送大事对象本体,目的是为了在指定时刻触发大事函数以及传递数据参数。

2、=emittertarget类实例化对象本身就是观看者,观看者的特点是有add,remove,触发转变的函数(update或这里的dispatchevent),以及应当实用于存放注册信息的属性或者单例对象。=emitterevent类主要是用来创建大事对象本身,在创建时声明需要触发的大事类型以及需要携带的参数。emittertarget.ts代码如下:import emitterevent from "./emitterevent"interface ievent/中介者即存储实例化对象绑定的大事的list的数据规范接口key:string:array;/k

3、ey是大事名,value是触发大事函数数组export default class emittertargetprivate list:ievent=;/私有变量list,只用于办法内部数据存储通信constructor()public addeventlistener(type:string,handler:function):voidif(!this.listtype)this.listtype=;/按照实例化对象传进来的大事类型推断list列表中是否注册该大事类型,假如没注册过,则创建这个字段var index=this.listtype.indexof(handler);/看对应的大事

4、中绑定的触发函数数组中是否存在这个触发函数if(index>-1) this.listtypeindex=handler;/存在则笼罩this.listtype.push(handler);/假如触发函数之前没有则在对应大事绑定的触发函数数组中新增public removeeventlistener(type:string,handler?:function):voidif(!this.listtype)return;/假如list注册表中无大事注册,则删除无意义,挺直返回if(handler=undefined)/假如调用该办法没有传要删除大事类型对应的触发函数就挺直将该大事类型对应的

5、所有触发函数删除for(var i=0;ithis.datahandler(e);/执行大事侦听办法时,在注册表中注册大事及其触发函数static get instance():mainif(!main._instance) main._instance=new main();return main._instance;private datahandler(e:emitterevent)/大事侦听的触发函数即回调函数var data:iresdata=e.data as iresdata;var command:ires;command=new resdatashow();command.exec(data.req,data.res,data.data);2.详细抛发操作import emitterevent from "./emitterevent"import main from "./main"var evt=new emitterevent(type,req:req,res

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论