Что такое this

Ответ

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

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

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

    const obj = {
      name: 'Test',
      greet() { console.log(this.name); }
    };
    obj.greet(); // 'Test'
  3. Обычная функция:
    В строгом режиме ('use strict') this будет undefined, иначе — глобальный объект.

    function test() { console.log(this); }
    test(); // window (или undefined в strict mode)
  4. Стрелочная функция:
    Не имеет своего this, берет его из внешнего контекста.

    const obj = {
      name: 'Test',
      greet: () => console.log(this.name) // this — внешний контекст (например, window)
    };
    obj.greet(); // undefined (если нет name в глобальном объекте)
  5. Явное указание:
    Можно привязать контекст с помощью call, apply или bind.

    function greet() { console.log(this.name); }
    greet.call({ name: 'Alice' }); // 'Alice'

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