ES6: доступ к классу 'this' из внутренней локальной функции - PullRequest
0 голосов
/ 03 мая 2018

В приведенном ниже примере мне нужно получить доступ к this.methodWhichRequredAnywhere() внутри functionWhichRequiredInConstructorOnly().

class Example(){

    construtor(){

        function functionWhichRequiredInConstructorOnly(){
             // warning: invalid code
            return this.methodWhichRequredAnywhere + ' complete';
        }

        this.message = functionWhichRequiredInConstructorOnly();
    }

    methodWhichRequredAnywhere(){
        return 'test';
    }
}

Слишком много объяснений о замыканиях в ответах на другие вопросы, но я все еще не нашел простого решения для решения вышеуказанной проблемы.

Примечание

Я понимаю, что приведенная выше архитектура кода противоречит ООП. Почему я это использовал?

  • Полагаю, functionWhichRequiredInConstructorOnly() будет использоваться после выполнения конструктора. Будет methodWhichRequredAnywhere будет?
  • Мне нужно сгруппировать объявления в моем реальном классе. Так что functionWhichRequiredInConstructorOnly() идет прямо под некоторыми объявлениями, где он использовался.

1 Ответ

0 голосов
/ 03 мая 2018

Вам необходимо вызвать функцию и явно установить ее значение this на желаемое значение. Вы можете сделать это с помощью .call:

this.message = functionWhichRequiredInConstructorOnly.call(this);

Или определите функцию как функцию стрелки, как предложено в комментариях. Функции стрелок не имеют собственной привязки this, но разрешают ее лексически, как и любая другая переменная.

Связанный:

...