如何理解JS中的“事件句柄”和“事件源”这两个概念呢?

在JS开发中,经常听到“事件句柄”和“事件源”这两个词,但对于他们的确切意思,一直不是很了解,希望大神能点拨一下

阅读 5.9k
3 个回答

事件句柄是指事件发生时要进行的操作。
(又称事件处理函数),每一个事件均对应一个事件句柄,在程序执行时,将相应的函数或语句指定给事件句柄,则在该事件发生时,浏览器便执行指定的函数或语句,从而实现网页内容与用户操作的交互。当浏览器检测到某事件发生时,便查找该事件对应的事件句柄有没有被赋值,如果有,则执行该事件句柄。
https://baike.baidu.com/item/...

事件源:

在事件中,当前操作的那个元素就是事件源。比如网页元素中a标签和input都有onclick事件,当点击a发生onclick事件时,事件源就是a标签,当点击input发送onclic事件是,事件源就是input。

https://blog.csdn.net/u014205...

概念不多说了,网上搜一下就有。我举个栗子吧。

比如有一间公司,前台是门口的王大爷,公司里有个职员小张。
有一天小张要出门办事,碰巧他还有个快递要收,于是他亲切的跟王大爷说:“大爷啊,我出去办点事,来快递帮我收一下啊。”

这时,就可以说他在前台王大爷(DOM对象)这里注册了一个“收快递”的事件句柄(handle)。

快递来了以后,快递员找小张,于是王大爷跟他说,“小张出去啦,我帮他收吧。”于是快递员将快递交给王大爷,蹦蹦跳跳地就走了。

那么可以发现这其实是个代理事件,事件源,即事件句柄的第一个参数(Event对象/事件对象)下的Event.target其实是小张,但是他把这个事件托管给了大爷,所以大爷实际上是触发事件的Event.currentTarget

当然小张如果选择自己亲自收快递,这就不是个代理事件了,Event.targetEvent.currentTarget就都是小张本人了。


不知道你听懂没……

句柄是翻译过来的,你可以直接看英文比较好理解。句柄这个词我一开始也很难理解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题