Для конкретного слушателя в моем приложении, я использую следующий код для уничтожения области видимости:
// this is all in a prototype of MyClass
var self = this;
myElement.addEventListener("stuff", function(e){self.doStuff(e)});
Получит doStuff
желаемую this
привязку.
Проблема появляется, когда я пытаюсь removeEventListener
. Я полагаю, это потому, что сигнатуры собственных функций должны отличаться?
// in a different prototype of MyClass
var self = this;
myElement.removeEventListener("stuff", function(e){self.doStuff(e)}); // doesn't work
Если я создаю отдельную функцию, которая содержит весь мой код для удаления области действия, то привязка this
в этом коде будет к нежелательному объекту myElement
. Таким образом, вопрос заключается в следующем: как я могу принудительно установить область прослушивателя и при этом иметь возможность удалить добавленный прослушиватель событий?
* примечание, использование переменных global
/ static
любым способом запрещено из-за характера проекта (в противном случае это будет просто!)