Назад к вопросам
Simbirsoft
Middle
3
Расскажи про this в разных контекстах: в методах объекта, в стрелочной функции и в обычной функции.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В JavaScript значение this зависит от контекста вызова функции:
- В методах объекта
thisссылается на объект, которому принадлежит метод:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- В обычной функции (не в методе)
thisзависит от режима и способа вызова:- В строгом режиме (
'use strict') —thisбудетundefined. - В нестрогом — глобальный объект (
windowв браузере).
- В строгом режиме (
function foo() {
console.log(this);
}
foo(); // window или undefined в strict
- В стрелочной функции
thisлексически наследуется из внешнего контекста, то есть берется из области, где функция была объявлена, а не вызвана:
const obj = {
name: 'Bob',
arrowFunc: () => {
console.log(this.name);
},
regularFunc() {
const arrow = () => {
console.log(this.name);
};
arrow();
}
};
obj.arrowFunc(); // undefined или имя из внешнего контекста
obj.regularFunc(); // Bob
Таким образом, стрелочные функции удобны для сохранения контекста this из внешней функции, а обычные функции и методы имеют собственное значение this в зависимости от вызова.