如何在不使用 Function.prototype.bind
的情况下将多个参数与事件对象一起传递给事件处理程序?
事件处理程序内部存在一个闭包。
以下基本代码无法正常工作,
element.addEventListener("click", eventHandler(eventObj + arguments), false);
function eventHandler(eventObj + arguments) {
return function(){}; //a closure
}
我不知道如何同时传递事件对象和其他参数给事件处理程序。
更新:
我甚至尝试在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));
};
}
element.removeEventListener("click", make_handler(extra_data));
但是它没有被移除。 - crimson_king