事件监听器的匿名功能

时间:2016-10-01 13:39:50

标签: javascript parameters addeventlistener

为什么以下匿名JS函数将“e”作为参数?我知道这是事件,但它是如何得救的?除了在这个事件监听器和它使用的处理程序中,没有提到这个“e”。

document.body.addEventListener("keyup", function(e) {
keys[e.keyCode] = false;
});

2 个答案:

答案 0 :(得分:1)

请记住,keyup事件发生时会调用匿名函数。匿名功能说,"嘿,当你给我打电话时,一定要给我一个参数。"因此,当keyup事件发生时,浏览器将使用参数调用该匿名函数,该参数将是事件对象。事件发生的那一刻就创建了事件对象。

答案 1 :(得分:0)

方法addAventListener将函数作为其输入,然后在事件发生时使用事件对象调用此函数。

添加了一个简单的例子来说明这一点。



function EventCreator() {
  var listeners = [];
  var counter = 0;
  setInterval(function() {
    counter++;
    listeners.forEach(function(listener) {
      listener(counter);
    });
  }, 1000);

  this.addListener = function(listener) {
    listeners.push(listener);
  };
}

var eventCreator = new EventCreator();

eventCreator.addListener(function(e) {
  console.log("An event has occured: ", e);
});




文档:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener