Я думаю, вам нужно создать замыкание:
var createHandler = function(p1, p2){
return function (event) {
//some code that uses p1 and p2
};
};
var handler;
... и теперь вы можете назначить обработчик следующим образом, все еще имея доступ к p1 и p2:
function foo(p1, p2){
handler = createHandler(p1, p2);
//Some code
obj.addEventListener('click', handler, false);
}
function koo(){
//Some code
obj.removeEventListener('click', handler, false);
handler = null;
}
Обратите внимание, что handler
теперь является глобальной переменной.
Обновление : я только что понял, что в вашем случае это можно упростить, объединив createHandler
и foo
следующим образом:
var handler; // we need this to be accessible both to foo and koo
function foo(p1, p2){
handler = function(event) {
// some code that uses p1 and p2
};
//Some code
obj.addEventListener('click', handler, false);
}
function koo(){
//Some code
obj.removeEventListener('click', handler, false);
handler = null;
}