Я пытаюсь использовать в своем проекте классы на основе 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, а также добавлять и удалять прослушиватели. Мне нужно создавать и создавать множество объектов такого рода, и я боюсь утечек памяти и постоянства объектов (все ранее созданные объекты получают «законченное» событие), когда анонимные функции не удаляются в качестве обработчиков событий.
Или я должен просто рассмотреть другой подход (встроенные функции, внутри функции инициализации, как обработчики событий). Они действительно влияют на удобочитаемость и согласованность, поэтому я хочу избежать их любой ценой.