В вашем конструкторе:
addEventListener("click", this.buttonListener);
... не будет работать, потому что addEventListener
- это метод для элементов DOM, и вы просто вызываете его напрямую. Но при условии, что вы измените что-то вроде:
document.querySelector('#nextQuestion').addEventListener("click", this.buttonListener);
... это все равно не сработает. Причина в том, что JavaScript вызывает функции. Ссылка на функцию this.buttonListener
при вызове не будет вызываться автоматически, например, если для this
установлено значение Quiz
. Поэтому, когда это выражение вычисляется в этой функции
this.counter
... this.counter
будет неопределенным. Вы можете обойти это, используя bind :
document
.querySelector('#nextQuestion')
.addEventListener("click", this.buttonListener.bind(this);
Это сделает так, что независимо от того, как вызывается this.buttonListener
, this
будет установлен на ваш Quiz
экземпляр.