- 2
- 0
- 约1.94千字
- 约 4页
- 2021-11-05 发布于浙江
- 举报
PAGE
PAGE 1
重写事件抛发接收机制原理
关于js中大事侦听和抛发机制的一些基础容易重构,通过这个容易重构了解中介者模式的工作方式,以下就是要做的容易重构计划思路:创建EmitterTarget类和EmitterEvent类。EmitterTarget类主要用法了中介模式+观看者模式其中EmitterTarget类的实例化属性list充当中介角色,每当执行add办法时,给EmitterTarget类的实例化对象注册大事名称及触发函数;每当该对象执行remove办法时,从list列表中移除注册的大事及触发函数;dispatchEvent办法主要是发送大事对象本体,目的是为了在指定时刻触发大事函数以及传递数据参数。==EmitterTarget类实例化对象本身就是观看者,观看者的特点是有add,remove,触发转变的函数(update或这里的dispatchEvent),以及应当实用于存放注册信息的属性或者单例对象。==EmitterEvent类主要是用来创建大事对象本身,在创建时声明需要触发的大事类型以及需要携带的参数。EmitterTarget.ts代码如下:import EmitterEvent from quot;./EmitterEventquot;;?interface IEvent{//中介者即存储实例化对象绑定的大事的list的数据规范接口[key:string]:Array;//key是大事名,value是触发大事函数数组}export default class EmitterTarget{private list:IEvent={};//私有变量list,只用于办法内部数据存储通信constructor(){?}public addEventListener(type:string,handler:Function):void{if(!this.list[type])this.list[type]=[];//按照实例化对象传进来的大事类型推断list列表中是否注册该大事类型,假如没注册过,则创建这个字段var index=this.list[type].indexOf(handler);//看对应的大事中绑定的触发函数数组中是否存在这个触发函数if(index-1) this.list[type][index]=handler;//存在则笼罩this.list[type].push(handler);//假如触发函数之前没有则在对应大事绑定的触发函数数组中新增}public removeEventListener(type:string,handler?:Function):void{if(!this.list[type])return;//假如list注册表中无大事注册,则删除无意义,挺直返回if(handler===undefined){//假如调用该办法没有传要删除大事类型对应的触发函数就挺直将该大事类型对应的所有触发函数删除for(var i=0;ithis.dataHandler(e));//执行大事侦听办法时,在注册表中注册大事及其触发函数}static get instance():Main{if(!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 quot;./EmitterEventquot;;import Main from quot;./Mainquot;;var evt=new EmitterEvent(type,{req:req,res:res,data:dataObj});Main.instance.dispatchEvent(evt);//抛发大事,触发instance单例的绑定的函数
您可能关注的文档
最近下载
- 科技研发项目管理流程指南.docx VIP
- 2025年河北省中考真题数学真题卷(含答案与解析).pdf VIP
- 道路隐性病害三维探地雷达检测技术规程.docx VIP
- 玩家国度ROG STRIX Z890-A GAMING WIFI S 主板 ROG STRIX Z890-A GAMING WIFI S 简体中文版快速指导手册.pdf
- 关于最短路径的SPFA快速算法.pdf VIP
- (正式版)D-L∕T 607-2017 汽轮发电机漏水、漏氢的检验.docx VIP
- 12J7-3-内装修吊顶标准规范(OCR).pdf VIP
- 2026北京经济技术开发区卫生健康领域事业单位招聘28人备考题库及一套答案详解.docx VIP
- 浙江省2014年高考文科第一批学校分数线.doc VIP
- 2026北京经济技术开发区卫生健康领域事业单位招聘28人备考题库及答案详解一套.docx VIP
原创力文档

文档评论(0)