В JavaScript все является объектом, и среди всех объектов есть несколько более неуловимых, чем this
. Прежде чем вы даже удосужитесь спросить «что такое this
?», вы должны сначала понять, как выполняется код JavasScript.
Язык JavaScript является «однопоточным», что означает, что интерпретатор выполнит код в одной строке, прежде чем перейдет к следующей. Область, в которой выполняется код, называется «контекст выполнения». Контексты выполнения располагаются один над другим, и код, который находится наверху стека, является исполняемым в данный момент кодом. This
изменяется по мере изменения контекста выполнения.
Первое правило this
заключается в том, что при создании классов объектов мы используем this
для ссылки на экземпляр, который будет создан при использовании ключевого слова new
. Контекст this
не меняется в свойствах и методах классов в JavaScript.
Второе правило заключается в том, что при выполнении функции как метода объекта this
ссылается на этот объект. В объекте, где метод содержит использование ключевого слова this
, он всегда будет ссылаться на этот объект, независимо от того, где вызывается этот метод.
Последнее правило this
по умолчанию относится к глобальному объекту. В любом случае, когда первые два правила не применяются, this
остается в глобальной области видимости.
Контекст this
может быть достаточно простым для идентификации при использовании в чисто написанном коде, но может оказаться кошмаром, если он написан как запах неуправляемого кода. Четкое понимание ключевого слова this
необходимо не только для использования передового опыта и написания чистого кода, но и для устранения ошибок.