Добавление и удаление прослушивателей событий с параметрами

Я пишуванильный JavaScript инструмент, который при включении добавляет слушатели событий к каждому из элементов, переданных в него.

Я хотел бы сделать что-то вроде этого:

var do_something = function (obj) {
        // do something
    };

for (var i = 0; i < arr.length; i++) {
    arr[i].el.addEventListener('click', do_something(arr[i]));
}

К сожалению, это не работает, потому что, насколько я знаю,при добавлении прослушивателя событий параметры можно передавать только в анонимные функции:

for (var i = 0; i < arr.length; i++) {
    arr[i].el.addEventListener('click', function (arr[i]) {
        // do something
    });
}

Проблема в том, что мне нужно иметь возможность удалять прослушиватель событий, когда инструмент отключен, но я не думаю, что можно удалить прослушиватели событий с анонимными функциями.

for (var i = 0; i < arr.length; i++) {
    arr[i].el.removeEventListener('click', do_something);
}

Я знаю, что могу легко использовать jQuery для решения своей проблемы, но я пытаюсь минимизировать зависимости. JQuery должен каким-то образом обойти это, но код немного джунглей!

Ответы на вопрос(3)

Ваш ответ на вопрос