Bạn không thể. Bạn phải sử dụng một hàm được đặt tên hoặc lưu trữ tham chiếu bằng cách nào đó.
var handler;
function doSomethingWith(param) {
handler = function(){
document.write(param);
};
document.body.addEventListener('scroll', handler,false);
}
setTimeout(function() {
document.body.removeEventListener('scroll', handler ,false);
}, 3000);
Cách tốt nhất là thực hiện điều này theo cách có cấu trúc để bạn có thể xác định các trình xử lý khác nhau và xóa chúng. Trong ví dụ trên, rõ ràng bạn chỉ có thể loại bỏ trình xử lý cuối cùng.
Cập nhật:
Bạn có thể tạo trình xử lý trình xử lý của riêng mình (:)):
var Handler = (function(){
var i = 1,
listeners = {};
return {
addListener: function(element, event, handler, capture) {
element.addEventListener(event, handler, capture);
listeners[i] = {element: element,
event: event,
handler: handler,
capture: capture};
return i++;
},
removeListener: function(id) {
if(id in listeners) {
var h = listeners[id];
h.element.removeEventListener(h.event, h.handler, h.capture);
delete listeners[id];
}
}
};
}());
Sau đó, bạn có thể sử dụng nó với:
function doSomethingWith(param) {
return Handler.addListener(document.body, 'scroll', function() {
document.write(param);
}, false);
}
var handler = doSomethingWith('Test. ');
setTimeout(function() {
Handler.removeListener(handler);
}, 3000);
BẢN GIỚI THIỆU