Каково значение "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