Gửi các đối số đến hàm gọi lại của eventListener yêu cầu tạo một hàm bị cô lập và chuyển các đối số đến hàm bị cô lập đó.
Đây là một chức năng trợ giúp nhỏ đẹp mà bạn có thể sử dụng. Dựa trên ví dụ "xin chào thế giới" ở trên.)
Một điều cũng cần thiết là duy trì một tham chiếu đến chức năng để chúng ta có thể loại bỏ người nghe một cách sạch sẽ.
// Lambda closure chaos.
//
// Send an anonymous function to the listener, but execute it immediately.
// This will cause the arguments are captured, which is useful when running
// within loops.
//
// The anonymous function returns a closure, that will be executed when
// the event triggers. And since the arguments were captured, any vars
// that were sent in will be unique to the function.
function addListenerWithArgs(elem, evt, func, vars){
var f = function(ff, vv){
return (function (){
ff(vv);
});
}(func, vars);
elem.addEventListener(evt, f);
return f;
}
// Usage:
function doSomething(withThis){
console.log("withThis", withThis);
}
// Capture the function so we can remove it later.
var storeFunc = addListenerWithArgs(someElem, "click", doSomething, "foo");
// To remove the listener, use the normal routine:
someElem.removeEventListener("click", storeFunc);