Что такое this

«Что такое this» — вопрос из категории JavaScript, который задают на 27% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

this в JavaScript указывает на контекст выполнения функции. Его значение зависит от того, как функция вызывается:

  1. Глобальный контекст:
    Вне функций this ссылается на глобальный объект (window в браузере, global в Node.js).

  2. Метод объекта:
    В методе объекта this ссылается на сам объект.

    const obj = {
      name: 'Test',
      greet() { console.log(this.name); }
    };
    obj.greet(); // 'Test'
  1. Обычная функция:
    В строгом режиме ('use strict') this будет undefined, иначе — глобальный объект.
    function test() { console.log(this); }
    test(); // window (или undefined в strict mode)
  1. Стрелочная функция:
    Не имеет своего this, берет его из внешнего контекста.
    const obj = {
      name: 'Test',
      greet: () => console.log(this.name) // this — внешний контекст (например, window)
    };
    obj.greet(); // undefined (если нет name в глобальном объекте)
  1. Явное указание:
    Можно привязать контекст с помощью call, apply или bind.
    function greet() { console.log(this.name); }
    greet.call({ name: 'Alice' }); // 'Alice'

Контекст this определяется в момент вызова функции, а не её объявления.