Не удается удалить прослушиватель событий removeEventListener

Столкнулся с такой проблемой. Не работает removeEventListener для удаления обработчика. document.removeEventListener('keydown', arrowLeft);

class Rect { constructor(options) {
    this.$rect = options.rect;
    this.speed = options.speed;
}


moveRectRight(option){

    let cord = 300;
    let arrowRight = function (e) {

        if(e.key === 'ArrowRight') {
            if(cord < 496) {
                cord = cord + this.speed;
                if(cord > 496) {
                    cord = 496
                }
                this.$rect.style.left = `${cord}px`;
            }
        }
    };

    if( option ) {
        document.addEventListener('keydown', arrowRight.bind(this));
    } else {
        document.removeEventListener('keydown', arrowRight.bind(this));
    }
} }

Как в этом коде можно удалить событие 'keydown'? Спасибо за любой ответ!


Ответы (1 шт):

Автор решения: vsemozhebuty

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

→ Ссылка