JavaScript: удаление слушателей событий как функций Class.prototype
Я пытаюсь иметь классы на основе Class.prototype в моем проекте, где у меня нет встроенных функций. Учитывая этот пример, невозможно удалить eventListener наmyVideo
видеообъект, который я имею в своем классе.
Это теоретический пример, а не реальный производственный код, который у меня есть.
var myClass = function () {
this.initialize();
}
MyClass.prototype.myVideo = null;
MyClass.prototype.initialize = function () {
this.myVideo = document.getElementById("myVideo");
this.myVideo.addEventListener("ended", this.onMyVideoEnded, false);
this.myVideo.play();
}
MyClass.prototype.onMyVideoEnded = function (event) {
// cannot remove event listener here
// this.myVideo.removeEventListener("ended", this.onMyVideoEnded, false);
}
Есть ли способ оставить обработчик как функцию Class.prototype и добавить и удалить слушателей. Мне нужно создать и создать много объектов такого рода, и я боюсь утечек памяти и устойчивости объектов (все ранее созданные объекты получают событие «закончилась»), когда анонимные функции не удаляются как обработчики событий.
Или я должен просто рассмотреть другой подход (встроенные функции, внутри функции инициализации, как обработчики событий). Они действительно влияют на читабельность и согласованность, поэтому я хочу избежать их на все расходы.