это в JavaScript
this
в JavaScript часто сбивает с толку новичков в этом языке. Отчасти эта путаница проистекает из того факта, что this
в JavaScript обрабатывается иначе, чем в других языках, таких как Java или self в Python.
Понимание this
абсолютно необходимо для понимания более сложных концепций в JavaScript или для чтения и написания кода JavaScript, поэтому мы проведем эту статью, пытаясь прояснить, что это на самом деле означает в JavaScript.
Мы посвятим большую часть статьи изучению this
вопроса со ссылкой на функции в JavaScript, поэтому сначала рассмотрим факт о функциях JavaScript, который поможет нам сделать это лучше.
this и функции
В JavaScript функции по сути являются объектами. Как и объекты, они могут быть присвоены переменным, переданы другим функциям и возвращены из функций. И, как и объекты, у них есть свои свойства. Одно из этих свойств this
.
Значение, которое this
сохраняет, является текущим контекстом выполнения программы JavaScript. Таким образом, при использовании внутри функции значение this
параметра будет меняться в зависимости от того, как эта функция определена, как она вызывается и от контекста выполнения по умолчанию.
Примечание: this
всегда содержит ссылку на один объект, который определяет текущую строку контекста выполнения кода.
Прежде чем мы углубимся в то, как this
ведет себя в функциях, давайте посмотрим, как это ведет себя вне их:
Глобальный контекст:
Строка кода, написанная вне функции, считается принадлежащей глобальному контексту, и значение this
в этом глобальном контексте такое же, как и у глобального объекта.
Например, если вы открыли консоль браузера и ввели в нее следующие строки и нажали return / enter:
console.log(this)
Вы увидите, что объект Window регистрируется в консоли, потому что глобальный объект в среде выполнения браузера, такой как среда выполнения Chrome, является объектом Window.
Однако внутри функции глобальный контекст может больше не присутствовать, и функция может иметь свой собственный определенный контекст и, следовательно, другое значение this
. Чтобы понять это, вернемся к функциям:
Функции в JavaScript можно вызывать несколькими способами:
1. вызов функции
2. вызов метода
3. вызов конструктора
это с вызовом функции:
Вызов функции относится к процессу вызова функции с использованием ее имени или выражения, которое оценивает объект функции, за которым следует набор открывающих и закрывающих первых скобок (включение скобок указывает на то, что мы просим движок JavaScript немедленно выполнить функцию. ).