Sobes.tech
Назад к вопросам
Middle
3

Расскажи про this в разных контекстах: в методах объекта, в стрелочной функции и в обычной функции.

Компании, где спрашивали
SimbirsoftSimbirsoft

Ответ от нейросети

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 в зависимости от вызова.