返回介绍

addEventListener与handleEvent关系

发布于 2024-06-02 22:07:04 字数 2393 浏览 0 评论 0 收藏 0

addEventListener是用来注册事件的,通常第二个参数我们传入的是一个回调函数,但是今天我在看Headroom.js的源码的时候,发现居然是可以传入object,只需要这个object具有handleEvent属性即可。

区别

既然都是调用一个方法,那么他们直接的区别到底是什么呢?很直观的感受应该就是this指向了,下面我们用代码来进行一下说明:

// using funcion handle
function clickHandler() {
    console.log('clickHandler:', this);
}
window.addEventListener('click', clickHandler, false);
// using obj handle
var handleObj = {
    handleEvent: function() {
        console.log("handleEvent obj:", this);
    }
}

window.addEventListener('click', handleObj, false);

我们在控制台分别测试一下,就会发现函数传递的时候,this指向的注册的对象。而对象处理的方式,this指向的是对象本身。这样当我们需要在处理函数中再操作对象的时候,就方便多了。

参考资料

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文