Как использовать глобальную переменную в методе, который был привязан? [Дубликат]

Это обычно возникает при использовании системы сборки, такой как Apache Ant , которая только компилирует java-файлы, когда java-файл является более новым, чем файл класса. Если подписи метода изменяются, а классы используют старую версию, вещи не могут быть скомпилированы правильно. Обычным решением является полная перестройка (обычно «ant clean», затем «ant»).

Иногда это также может быть вызвано при компиляции с одной версией библиотеки, но работает с другой версией.

7
задан aCarella 17 November 2016 в 15:56
поделиться

2 ответа

Это все еще предложение , и оно выглядело бы следующим образом:

class A {
   property = "value";
}

Кстати, когда вы хотите получить доступ к свойству класса (т. е. к собственному свойству объекта), вы 'll все еще нужно использовать this.property:

class A {
    property = "value";

    constructor() {
        console.log(this.property);
    }
}

Если вы хотите использовать этот синтаксис сегодня, вам нужно использовать транспилер, например Babel .

7
ответ дан Matías Fidemraizer 17 August 2018 в 09:25
поделиться

Вы не объявляете свойства; просто установите this._name = name.

@Ryan Как мне получить доступ к переменной экземпляра в моем прослушивателе событий? this._name просто дает undefined.

Каждый вызов функции * работает со своим this; ваш слушатель событий является функцией. Вы можете назначить var that = this; вне прослушивателя событий и получить доступ к нему that:

myFunction() {
  var that = this;

  document.getElementById("myElement").addEventListener("click", function() {
    console.log(that._name);
  });
}

Или создать новую функцию, которая всегда вызывает ваш с тем же this, используя Function.prototype.bind:

myFunction() {
  document.getElementById("myElement").addEventListener("click", function() {
    console.log(this._name);
  }.bind(this));
}

Или используйте функции стрелок ES6, которые используют значение this, где они были определены (лексический this):

myFunction() {
  document.getElementById("myElement").addEventListener("click", () => {
    console.log(this._name);
  });
}
4
ответ дан Ry- 17 August 2018 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: