В JavaScript все является объектом, и среди всех объектов есть несколько более неуловимых, чем this. Прежде чем вы даже удосужитесь спросить «что такое this?», вы должны сначала понять, как выполняется код JavasScript.

Язык JavaScript является «однопоточным», что означает, что интерпретатор выполнит код в одной строке, прежде чем перейдет к следующей. Область, в которой выполняется код, называется «контекст выполнения». Контексты выполнения располагаются один над другим, и код, который находится наверху стека, является исполняемым в данный момент кодом. This изменяется по мере изменения контекста выполнения.

Первое правило this заключается в том, что при создании классов объектов мы используем this для ссылки на экземпляр, который будет создан при использовании ключевого слова new. Контекст this не меняется в свойствах и методах классов в JavaScript.

Второе правило заключается в том, что при выполнении функции как метода объекта this ссылается на этот объект. В объекте, где метод содержит использование ключевого слова this, он всегда будет ссылаться на этот объект, независимо от того, где вызывается этот метод.

Последнее правило this по умолчанию относится к глобальному объекту. В любом случае, когда первые два правила не применяются, this остается в глобальной области видимости.

Контекст this может быть достаточно простым для идентификации при использовании в чисто написанном коде, но может оказаться кошмаром, если он написан как запах неуправляемого кода. Четкое понимание ключевого слова this необходимо не только для использования передового опыта и написания чистого кода, но и для устранения ошибок.