为什么以下匿名JS函数将“e”作为参数?我知道这是事件,但它是如何得救的?除了在这个事件监听器和它使用的处理程序中,没有提到这个“e”。
document.body.addEventListener("keyup", function(e) {
keys[e.keyCode] = false;
});
答案 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