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