废话不多说,直接上代码
//发布订阅模式
class EventEmiter{
constructor(){
//维护一个对象
this._events={
}
}
on(eventName,callback){
if( this._events[eventName]){
//如果有就放一个新的
this._events[eventName].push(callback);
}else{
//如果没有就创建一个数组
this._events[eventName]=[callback]
}
}
emit(eventName,...rest){
if(this._events[eventName]){ //循环一次执行
this._events[eventName].forEach((item)=>{
item.apply(this,rest)
});
}
}
removeListener(eventName,callback){
if(this._events[eventName]){
//当前数组和传递过来的callback相等则移除掉
this._events[eventName]=
this._events[eventName].filter(item=>item!==callback);
}
}
once(eventName,callback){
function one(){
//在one函数运行原来的函数,只有将one清空
callback.apply(this,arguments);
//先绑定 执行后再删除
this.removeListener(eventName,one);
}
this.on(eventName,one);
//此时emit触发会执行此函数,会给这个函数传递rest参数
}
}
class Man extends EventEmiter{}
let man=new Man()
function findGirl() {
console.log('找新的女朋友')
}
function saveMoney() {
console.log('省钱')
}
man.once('失恋',findGirl);
//man.on('失恋',findGirl) //失恋 ,绑定一个函数方法
man.on('失恋',saveMoney)//失恋 ,绑定一个函数方法
man.removeListener('失恋',saveMoney); //移除一个函数方法
man.emit('失恋');
//绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行
以上这篇js 发布订阅模式的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js
# 发布订阅
# JavaScript事件发布/订阅模式原理与用法分析
# JavaScript实现与使用发布/订阅模式详解
# JavaScript中发布/订阅模式的简单实例
# JS前端设计模式之发布订阅模式详解
# JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
# JavaScript设计模式之观察者模式与发布订阅模式详解
# 详解JavaScript设计模式中的享元模式
# JavaScript设计模式之单例模式应用场景案例详解
# JavaScript 设计模式 安全沙箱模式
# JavaScript设计模式之观察者模式(发布者-订阅者模式)
# javascript 发布-订阅模式 实例详解
# 绑定
# 给大家
# 一个函数
# 移除
# 希望能
# 如果没有
# 会给
# 这篇
# 多说
# 创建一个
# 小编
# 大家多多
# 清空
# 组中
# 删除掉
# 下次
# 哪一项
# _events
# span
# pre
相关文章:
如何续费美橙建站之星域名及服务?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
制作国外网站的软件,国外有哪些比较优质的网站推荐?
山东网站制作公司有哪些,山东大源集团官网?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
建站主机选择指南:服务器配置与SEO优化实战技巧
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
C#如何在一个XML文件中查找并替换文本内容
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何通过西部数码建站助手快速创建专业网站?
如何在宝塔面板创建新站点?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
制作网站的基本流程,设计网站的软件是什么?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何通过cPanel快速搭建网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
制作表格网站有哪些,线上表格怎么弄?
学校建站服务器如何选型才能满足性能需求?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何选择适合PHP云建站的开源框架?
制作企业网站建设方案,怎样建设一个公司网站?
如何零基础在云服务器搭建WordPress站点?
如何通过虚拟机搭建网站?详细步骤解析
如何快速生成凡客建站的专业级图册?
PHP 500报错的快速解决方法
寿县云建站:智能SEO优化与多行业模板快速上线指南
微信推文制作网站有哪些,怎么做微信推文,急?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何高效完成自助建站业务培训?
网站制作说明怎么写,简述网页设计的流程并说明原因?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何通过FTP空间快速搭建安全高效网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站之星免费版是否永久可用?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
微课制作网站有哪些,微课网怎么进?
行程制作网站有哪些,第三方机票电子行程单怎么开?
建站主机如何选?高性价比方案全解析
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何快速搭建响应式可视化网站?
javascript基本数据类型及类型检测常用方法小结
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
内部网站制作流程,如何建立公司内部网站?
一键网站制作软件,义乌购一件代发流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。