位置: 编程技术 - 正文

javascript自定义事件功能与用法实例分析(javascript自定义属性)

编辑:rootadmin

推荐整理分享javascript自定义事件功能与用法实例分析(javascript自定义属性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript自定义函数一定要有返回值对不对,javascript自定义函数,javascript自定义对象的方法,javascript自定义一个数组 求不及格数,javascript自定义函数一定要有返回值,javascript自定义函数一定要有返回值,javascript自定义函数一定要有返回值,javascript自定义函数一定要有返回值,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了javascript自定义事件功能与用法。分享给大家供大家参考,具体如下:

概述

自定义事件很难派上用场?

为什么自定义事件很难派上用场,因为以前js不是模块化开发,也很少协作。因为事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到事件进行通信。而现在有了模块化之后,已经可以使用自定义事件进行各模块间协作了。

哪里用得到自定义事件?

事件本质是一种消息,事件模式本质上是观察者模式的实现,那么用得上观察者模式的地方,自然也可以也可以用上事件模式。所以,如果:

1、一个目标对象改变,需要多个观察者调整自身的。

比如:我需要元素A点击之后,元素B显示鼠标的位置,元素C显示提示,元素D.....

2、分模块协作需要解耦的

比如:甲负责模块A,乙负责模块B,模块B需要A运行完之后才能运行

传统的写法将逻辑写在一个方法里面:

这样做每次扩展都要修改a的点击函数,不好扩展。

自定义事件的写法

可以看到,elem通过dispatchEvent方法触发的事件,只有elem上注册的监听器才能监听得到。这就很没意思了,自己发给自己消息,通知自己去干什么。

创建自定义事件可参考: MDN : Creating_and_triggering_events

应用

从前面 js 自定义事件 的描述中知道:元素A通过dispatchEvent方法触发的事件,只有A上注册的监听器才能监听得到。

我们想要的效果是,别的对象干了某件事之后, 发个消息给我们,好让我们能做相应的改变。要做到这样,也不是没办法:我们可以在一个公共对象上监听和触发事件,这就很有意义了。

例子一:通知多个对象

javascript自定义事件功能与用法实例分析(javascript自定义属性)

要实现 元素A点击之后,元素B显示鼠标的位置,元素C显示提示,可以这样写:

文件:a.js

注意:import进来的变量虽然不使用,但是一定不能省略

文件b.js:

文件c.js:

这样写,三个模块之间完全不用关心对象,也不知道对方存在,耦合度非常的低,完全可以独立编写,不会互相影响。这其实就是一个观察者模式的实现。

例子二:游戏框架

要开发一个游戏,启动游戏,加载图片和音乐,加载完后,渲染场景和音效,加载和渲染由不同的人负责。可以这样写:

文件:index.js

文件:loadImage.js

文件:loadMusic.js

文件:initScene.js

加载模块和渲染模块互不影响,易于扩展。

携带信息

除此之外,事件还能传递自定义信息:

(注意:传递自定义信息需要使用CustomEvent,而不是Event)

然后在监听函数里取出:

这个功能非常有用!

附:点击此处查看github示例

PS:这里再为大家附上javascript系统自带事件参考表供大家参考查询:

javascript事件与功能说明大全:

js使用xml数据载体实现城市省份二级联动效果 本文实例为大家分享了使用xml数据载体实现城市省份二级联动的具体代码,供大家参考,具体内容如下首先写好前台页面testProvince.jsp,将请求通过open、

详解用webpack的CommonsChunkPlugin提取公共代码的3种方式 Webpack的CommonsChunkPlugin插件,负责将多次被使用的JS模块打包在一起。CommonsChunkPlugin能解决的问题在使用插件前,考虑几个问题:对哪些chunk进行提取,这

webpack中CommonsChunkPlugin详细教程(小结) 本文介绍了webpack中CommonsChunkPlugin详细教程(小结),分享给大家,也给自己留个笔记,具体如下:1.demo结构:2.package.json配置:{"name":"webpack-simple-demo","versi

标签: javascript自定义属性

本文链接地址:https://www.jiuchutong.com/biancheng/369755.html 转载请保留说明!

上一篇:ES6中javascript实现函数绑定及类的事件绑定功能详解

下一篇:js使用xml数据载体实现城市省份二级联动效果(js调用xml)

  • aisino金税盘怎么安装在电脑上
  • 税金及附加二级明细
  • 固定资产的进项税额不允许抵扣的增值税属于
  • 农民收购农产品发票
  • 累计折旧 计提折旧
  • 单位出租不动产印花税
  • 上市公司收购其他公司要多久
  • 财政补助结转会计处理
  • 企业人员信息已存在无需新增
  • 外商独资企业资本金的使用
  • 轿车被盗
  • 收回已作为坏账准备的应收账款会计分录
  • 顾客办理会员卡要退怎么办
  • 居民企业技术转让所得税优惠政策
  • 小规模企业如何变更营业范围
  • 利润是负数不用计提所得税规定是什么?
  • 营改增后建筑业税率变化情况
  • 花生油 增值税
  • 差额征税可以享受1%
  • 核定征收金额如何确定
  • 通讯费补贴入什么科目
  • 外聘老师课时费计入什么科目
  • 2018增值税暂行条例
  • 公司面临清算,外包企业的员工怎么处理?
  • 电脑搜索功能不准确
  • 厂商退货款差额怎么算
  • 企业工会经费计提比例
  • 驾校收入与成本的关系
  • 如何利用命令符复制文件
  • 电脑网络提示ip地址错误怎么办
  • 核定征收的小规模纳税人要做账吗
  • PHP - EasyUI DataGrid 资料取的方式介绍
  • 公司员工意外险,死亡能赔多少钱
  • 企业通讯费管理办法
  • 建筑业2021年享受核定征收吗
  • php的execute
  • php创建视图
  • 长期应付款核算范围有哪些
  • 遮天传官网
  • 支付中介费和物业费比例
  • 无形资产摊销怎么计算月摊销额
  • 自产自销农产品免税备案取消
  • 税务维护费抵扣分录
  • Parcel 中文文档 | Parcel 中文网
  • centos7自带yum吗
  • 开发区政府退税政策合法吗
  • 代扣代缴个人所得税分录
  • 国税办税人员怎么解绑
  • 公司买手表可以抵扣增值税吗
  • 土地使用权的界定
  • 定额备用金与非备用金
  • 医疗费用属于什么费用
  • 外币账户的钱怎么转成人民币
  • 专项应付款转入资本公积的规定
  • 项目支付预缴税额怎么算
  • 被代持股份的股东需要负责吗
  • 损益类科目明细账怎么结账
  • 客户要扣货款太多怎么处理
  • 先出报表还是先报表
  • 合伙企业应该用什么会计制度
  • sqlserver 字符串包含
  • win8旗舰版和专业版区别
  • win10怎么更改磁盘空间分配
  • centosgui
  • mmc.exe是什么进程
  • win10 edge浏览器崩溃
  • vivo渠道服容易被找回吗
  • 勒索病毒一般勒索多少钱
  • win7安装方法ghost
  • 安卓字库ic
  • 如何编写一个完整的教学目标
  • Android Build.prop
  • 玩转cmd命令
  • jquery可编辑表格插件
  • python正则批量替换字符串
  • android线程状态
  • Unity3D游戏开发毕业论文
  • 重庆网上申报税务操作流程
  • 个人非住房房屋怎么交税
  • 资源税条例实施细则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设