Контекст в слушателях событий

Рейтинг: 0Ответов: 1Опубликовано: 08.02.2023

Подскажите, имеется класс, нужно внутри метода registerEvents выполнить проверку соответствия нажатой клавиши с this.currentSymbol, но разумеется теряется контекст, не могу понять как его правильно забиндить.

class Something{
  registerEvents() {
    function pressKey(event){
      if (event.key==this.currentSymbol) {this.success}
    }

    document.addEventListener('keyup', pressKey)
  }
  renderWord() {
     this.currentSymbol = this.wordElement.querySelector('.symbol');
  }
}
new Something(document.getElementById('some'))

Ответы

▲ 0Принят

Попробуйте передать контекст класса через обычную переменную, вот так:

  registerEvents() {
    const self = this; // Контекст класса будет лежать в self
    function pressKey(event){
      if (event.key === self.currentSymbol) {self.success}
    }

    document.addEventListener('keyup', pressKey)
  }