js 发布-订阅者模式 た 入场券 2022-10-31 10:57 160阅读 0赞 /** * 发布-订阅模式 * bw 2020/07/29 */ const Event = { regsiter:{}, on: function(name, method, target){ if (!this.regsiter.hasOwnProperty(name)) { this.regsiter[name] = []; }else{ let idx = this.regsiter[name].findIndex(ele => ele.target == target) // 同名 同this 直接删除 if (idx != -1) { this.regsiter[name].splice(idx, 1) } } this.regsiter[name].push({ callback: method, target: target }); }, emit: function(name) { if (this.regsiter.hasOwnProperty(name)) { let handlerList = this.regsiter[name]; let handler = handlerList[0]; let args = []; for (let j = 1; j < arguments.length; j++) { args.push(arguments[j]); } return handler.callback.apply(this, args); } }, off: function(name, target){ if (this.regsiter.hasOwnProperty(name)) { let idx = this.regsiter[name].findIndex(ele => ele.target == target) // 抛出异常事件 if (idx === -1) { return new Error('无该绑定事件') } // 移除事件 this.regsiter[name].splice(idx, 1) if (this.regsiter[name].length === 0) { delete this.regsiter[name] } } }, }; export default Event; 如果是在全局使用 最好有一个单例 import Event from './event' const global = global || {}; global.event = Event; export default global; 使用先引入(路径自己修改) import global from './global/global' 注册 global.event.on('testBtn', this.testBtn.bind(this), this); 触发 //不带参数 global.event.emit('testBtn'); //带入参数 global.event.emit('testBtn',{ test:111111 }); global.event.emit('testBtn',2222); 删除 global.event.off('testBtn', this);
相关 js 发布-订阅者模式 / 发布-订阅模式 bw 2020/07/29 / const Event = { regsiter:{}, た 入场券/ 2022年10月31日 10:57/ 0 赞/ 161 阅读
相关 订阅发布和观察者模式 发布订阅模式 > 把多个方法暂存起来,最后一次触发执行 作用: 解偶 使用场景: 如,多个类或者函数内,可以分散订阅某个操作,最后统一发布。分散的好处就是不 ╰+攻爆jí腚メ/ 2022年08月28日 14:47/ 0 赞/ 207 阅读
相关 js 订阅者模式(观察者模式) 原文网址:http://www.cnblogs.com/LuckyWinty/p/5796190.html [附加题] 请实现下面的自定义事件 Event 对 悠悠/ 2022年07月15日 13:15/ 0 赞/ 187 阅读
相关 观察者模式(发布-订阅者模式) 观察者模式定义了一种依赖关系,解决了主体对象和观察者之间功能的耦合,主要应用于大型项目的模块化开发中,解决团队开发中模块之间的通信问题,利用观察者模式还可以实现自定义事件。 素颜马尾好姑娘i/ 2022年05月22日 06:00/ 0 赞/ 215 阅读
相关 javascript 观察者模式 发布订阅模式 观察者模式 观察者模式,每一个观察者对象有两个方法 添加监听`subscribe` 发布事件`publish` 观察者有个`list`存放所有的已经添加监 本是古典 何须时尚/ 2022年04月24日 10:14/ 0 赞/ 212 阅读
相关 JS中的发布-订阅者模式 一、前言 学习vue的时候,对深入响应式原理模模糊糊的,现在简单一下理解。 二、简述VUE响应原理。 > vue.js 是采用数据劫持结合发布者-订阅者模式的方式 迷南。/ 2022年04月23日 13:54/ 0 赞/ 207 阅读
相关 【设计模式】实现一个简单的js发布-订阅者模式 一 概念 发布—订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。 太过爱你忘了你带给我的痛/ 2022年03月10日 10:42/ 0 赞/ 188 阅读
相关 JavaScript发布订阅者模式 假如你要建立一个网站,通常来说会有许多用户。你作为一名管理者,有时候需要将重要的消息发布给你的用户。在软件开发领域,开发此功能往往用到发布订阅者模式。下面我以简单的javasc 朴灿烈づ我的快乐病毒、/ 2022年01月20日 02:09/ 0 赞/ 257 阅读
相关 发布订阅模式(观察者模式) 设计模式的目的就是使类成为可复用的组件。 在观察者模式中观察者接口只注重被观察者,而被观察者接口只注重观察者,具体是观察者接口实现类中的哪一个并不在意,而被观察者也是如此。这 清疚/ 2021年12月15日 00:27/ 0 赞/ 288 阅读
还没有评论,来说两句吧...