Проблема с доступом к const внутри класса

176
31 июля 2018, 11:50

В конструкторе класса объявлена константа

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

Почему так происходит? Ведь по-идее я должен получать доступ к константе в любом месте класса.

Answer 1

Почему так происходит? Ведь по-идее я должен получать доступ к константе в любом месте класса.

Это с чего это вы взяли? У конструктора и какого-то метода только одна общая вешь - контекст. Область видимости ( где и хранятся переменные ) разная. Хотите доступ в любом месте класс? Делайте переменную св-вом объекта

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.

READ ALSO
Поиск потомков конкретного элемента jQuery

Поиск потомков конкретного элемента jQuery

Подскажите,как правильно собирать элементы принадлежащие к определённой группеЕсть некая HTML-структура типа

183
Объединение запросов MySQL + group by

Объединение запросов MySQL + group by

Есть таблица звонков:

198
Как совместить эти три запроса (SQL)?

Как совместить эти три запроса (SQL)?

Как совместить эти запросы в один?

175