В конструкторе класса объявлена константа
constructor(gSel){
const hodXthis = this.hodX.bind(this);
this.gameSel = document.getElementById(gSel);
this.gameSel.addEventListener("click", hodXthis);
}
В методе этогоже класса пытаюсь получить к ней доступ
hodX(e){
if(this.proverka("x")[0]) {
this.gameSel.removeEventListener("click", hodXthis);
alert("You (x) win!");
}
}
Но в консоли получаю ошибку
Uncaught ReferenceError: hodXthis is not defined
at krgame.hodX
Почему так происходит? Ведь по-идее я должен получать доступ к константе в любом месте класса.
Почему так происходит? Ведь по-идее я должен получать доступ к константе в любом месте класса.
Это с чего это вы взяли? У конструктора и какого-то метода только одна общая вешь - контекст. Область видимости ( где и хранятся переменные ) разная. Хотите доступ в любом месте класс? Делайте переменную св-вом объекта
constructor(gSel){
// нижнее подчеркивание намекает, что переменная приватная
// это лишь соглашение, так как самих приватных св-во
// в js пока не завезли(
this._hodXthis = this.hodX.bind(this);
this.gameSel = document.getElementById(gSel);
this.gameSel.addEventListener("click", this._hodXthis);
}
hodX(e){
if(this.proverka("x")[0]) {
this.gameSel.removeEventListener("click", this._hodXthis);
alert("You (x) win!");
}
}
P.S.
if(this.proverka("x")[0]) {
За такое по рукам бьют, транслитом лучше переменные не называть. Можно назвать checkGameStatus
или еще как-нибудь, но не как не proverka
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите,как правильно собирать элементы принадлежащие к определённой группеЕсть некая HTML-структура типа