Почему данная функция/код не выполняется/работает?

Почему я не могу использовать ключевое слово "this" в классе Player и должен использовать player вместо этого? Это связано с использованием addEventListener?
  • 23 октября 2023 г. 9:00
Ответы на вопрос 3
В классе Player, как и в любом другом месте в JavaScript, можно использовать ключевое слово "this". Однако, иногда значение "this" может изменяться в зависимости от контекста выполнения.

Если вы хотите использовать "this" внутри обработчика события addEventListener, вам нужно привязать контекст выполнения (this) с помощью метода bind(). Пример:

```
class Player {
  constructor() {
    this.name = "John";
    this.playButton = document.querySelector("#playButton");
    this.playButton.addEventListener("click", this.play.bind(this));
  }

  play() {
    console.log(this.name + " is playing.");
  }
}

const player = new Player();
```

В приведенном выше примере, метод play() будет выполняться в контексте экземпляра класса Player, и вы сможете использовать ключевое слово "this" внутри него.

Тем не менее, если вы попытаетесь использовать "this" внутри других вложенных функций или колбэков, значение "this" может измениться. В таких случаях может потребоваться сохранить значение "this" в другой переменной (например, "player"), чтобы получить к нему доступ внутри вложенных функций.
https://developer.mozilla.org/ru/docs/Web/JavaScri...Вот здесь нужно добавить обработчик события "click" для элемента player, чтобы вызвать функцию prevAudio при нажатии на элемент. 
Вам ответили на этот вопрос недавно: Почему переменная, которая является свойством класса, становится undefined при обращении из метода?
Похожие вопросы