将多个参数与事件对象一起传递给事件处理程序--javascript

Asu*_*sur 5 javascript dom-events

如何在不使用Function.prototype.bind的情况下将多个参数与事件对象一起传递给事件处理程序?

事件处理程序中有一个闭包.

以下基本代码不起作用,

Function.prototype.bind

function eventHandler(eventObj + arguments) {
  return function(){}; //a closure
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何将事件对象和其他参数同时传递给事件处理程序.

更新:

我甚至尝试在addEventListener中使用匿名函数.这样做,似乎控件从未到达回调函数内的闭包.

element.addEventListener("click", function(e){
    var data = {'event':e, 'args':arguments};
    eventHandler(data);
  }, false);

function eventHandler(data) {
  return function(){  //this function is never executed
    console.log(JSON.stringify(data));
  };
}
Run Code Online (Sandbox Code Playgroud)

JMM*_*JMM 18

因此,如果我理解正确,您希望向元素添加事件侦听器,并配置一些在您添加侦听器时存在的其他数据,以便在调用时传递给侦听器.如果这就是你想要做的,你只需要一个合适的关闭.这样的事情,假设您想要将其他数据存储在对象中:

var extra_data = {one: "One", two: "Two"};

var make_handler = function (extra_data) {
  return function (event) {
    // event and extra_data will be available here
  };
};

element.addEventListener("click", make_handler(extra_data));
Run Code Online (Sandbox Code Playgroud)