【问题标题】:addEventListener: How to access eventaddEventListener:如何访问事件
【发布时间】:2011-11-22 02:42:29
【问题描述】:

对于以下示例,我有两个问题:

function doIt(){
  this.attribute = someValue; // Works as expected
  alert(event.which); // Doesn't work
}
element.addEventListener("click",doIt,false);

问题1:为什么this绑定到函数而event没有绑定?
问题 2:执行此操作的适当方法是什么?

【问题讨论】:

    标签: javascript binding event-handling this addeventlistener


    【解决方案1】:

    this 是 JavaScript 内置的。它总是可以访问的。 event 不是。仅当当前方法支持时才可用。

    你需要有类似的东西

    function doIt(event)
    

    this 是什么? - http://howtonode.org/what-is-this

    【讨论】:

    • 我意识到this 是内置的,但我不明白this 是如何引用元素的,我认为它应该引用函数本身。我尝试了 addEventListener("click",function(){doit(event);} 修复了event 但破坏了this。似乎有比两者都传递更好的方法。抱歉,绑定是我的事情我正在努力抓住......
    • this 指的是当前的object,你的方法不是一个对象,它是一个method。因此,唯一可用的object 是所选元素。
    • 看看这些解释 this 从调用者传递给函数的文档。下面他们有原型,所以你可以看到代码是如何工作的 - developer.mozilla.org/en/DOM/element.addEventListener#section_8
    • 嗯...你是对的,只需 doIt(event);有效,但我不明白为什么。我想我有更多的功课。非常感谢。
    • @Fantabulum - 对于调用者将事件参数传递给您的函数的事件。这实际上是您从经验中“知道”或必须依靠文档才能知道的事情。 Javascript 允许您向函数传递任意数量的参数,无论定义是否实际使用它们。所以doIt() : doIt(event) : doIt(event, b, c, d) 都是有效的
    猜你喜欢
    • 2021-05-22
    • 2010-10-15
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多