博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
addEventListener中的EventListener接口对象
阅读量:6650 次
发布时间:2019-06-25

本文共 1367 字,大约阅读时间需要 4 分钟。

写在最前

遗漏的知识点:addEventListener的第二个参数不光可以传入一个函数,还可以传入一个实现了 接口的对象。

文档中的描述

listener

当所监听的事件类型触发时,会接收到一个事件通知(实现了 接口的对象)对象。listener 必须是一个实现了 接口的对象,或者是一个

摘自

我一直都是在listener中传入一个函数,通过监听事件发生来实现一些逻辑。然而看到文档描述中先提到了“一个实现了EventListener接口的对象”通过进一步查看文档了解到,这个对象指的就是一个含有handleEvent方法的对象。

var obj = {   // ...    handleEvent: function(event) {        // ...        console.log('event', event)    }}document.body.addEventListener('click', obj, false)复制代码

EventListener所注册的事件发生时,该方法就会被调用,同时会有一个event参数传入到方法中。

了解了概念之后就要看这个知识点能为实际开发带来什么好处了

开发中的应用

举个?

var obj = {    a: 1,    handleEvent: function(event) {        alert(this.a)    }}document.body.addEventListener('click', obj, false) // 1document.body.addEventListener('click', obj.handleEvent, false) // undefined复制代码

从例子中可以看出,这种绑定obj会影响this的指向。也就是说我们可以利用这种特点,在处理事件时使用obj中的私有属性或方法

再举个?

var obj = {    a: 1,    handleEvent: function(event) {        alert(this.a)    }}var anotherHandler = function(event) {    alert('hello world')}document.body.addEventListener('click', obj, false) // 1setTimeout(function(){    obj.handleEvent = anotherHandler // hello world},2000)复制代码

从这个例子中可以看出,这种形式的事件绑定,很方便就能动态改变处理事件的逻辑。不需要先remove再add。

写在最后

这种绑定方式的缺点不在于兼容性方面,应该是可读性方面的缺陷。我在看别人的源码时看到这个时非常疑惑(个人水平有限也占一定的原因),直到查阅了资料之后才知道有这样的一种绑定事件的写法。

所以,日常工作开发中要使用这样的写法时,最好确定一下一起开发的小伙伴是不是也清楚这种方式,避免协作时的冲突。

参考

惯例

本篇原文出自

转载于:https://juejin.im/post/5b4326925188251aee1384b5

你可能感兴趣的文章
Trapping Rain Water 存水问题
查看>>
加一度解析百度搜索困局,小程序将开启搜索流量新机遇
查看>>
eclipse使用maven创建web3.0项目
查看>>
如何测量主板上场效应管三级管是否坏掉
查看>>
C# 深拷贝
查看>>
apache的prefork和workder模式
查看>>
CDH4报错一则
查看>>
[零散篇]Java学习笔记---Java的Socket网络编程以及多线程
查看>>
MySQL8.0新特性——支持原子DDL语句
查看>>
库函数之字符串与数字间的转换
查看>>
Android开发中EditText获得焦点弹出输入框改变屏幕布局
查看>>
openssl生成pem
查看>>
linux下mysql自动备份脚本代码
查看>>
MySQL主从搭建与配置
查看>>
《Java从入门到放弃》JavaSE入门篇:异常
查看>>
the reference must with the ';' delimiter
查看>>
Linux运行级别
查看>>
处理Sever 2008 连接 Openfiler的iSCSI存储chap认证失败的问题
查看>>
Android studio Android Monitor介绍四
查看>>
oracle 查看日志
查看>>