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

Или я должен просто рассмотреть другой подход (встроенные функции, внутри функции инициализации, как обработчики событий). Они действительно влияют на удобочитаемость и согласованность, поэтому я хочу избежать их любой ценой.

5
задан Brian Tompsett - 汤莱恩 2 September 2019 в 18:49
поделиться