Каково значение "this" внутри функции стрелки, которая определена внутри класса

Вопрос новичка, но мне было интересно, каково значение "this" для функции со стрелкой, определенной в классе javascript.

Это ссылка на класс, содержащий его?

Например:

class abc {
    testFunction = () => {
        //What is the value of 'this' here?
    }
}

Попытка понять это лучше понять, как функции передаются компонентам в ReactJS.

2 ответа

Решение

Вы пометили свой вопрос "ES6" (то есть ES2015) и тому подобное, но учтите, что поля классов (синтаксис, который вы используете) отсутствуют в ES2015 - или ES2016, или ES2017, и не будут в ES2018. Это все еще предложение 3-го этапа, несмотря на то, что оно широко используется в сообществе React посредством транспиляции.

С этим предложением this для поля инициализаторы такие же, как и в конструкторе: ссылка на вновь созданный экземпляр. Этот код эквивалентен:

class abc {
    constructor() {
        this.testFunction = () => {
            // ...
        };
    }
}

В этом случае this Ключевое слово просто экземпляр ABC. Например:

var alphabet = new abc();
alphabet.testFunction();

class abc {
testFunction = () => {
    this.x = 30; // is the same as:
alphabet.x = 30;
}

Надеюсь это поможет! Для получения дополнительной информации об этом ключевом слове перейдите по https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

Другие вопросы по тегам