Таким образом, JavaScript ввел это ключевое слово в es5, но некоторые новые вещи появились в этом ключевом слове в es6 или es2015. Это ключевое слово для доступа к элементам объектов. В порядке! давайте поговорим об одном примере, чтобы понять это правильно…
Здесь вы можете видеть, что я создаю объект с именем person и устанавливаю firstName, secondName, age и для доступа к нему использую это ключевое слово, а после этого я использую метод JavaScript для печати года рождения этого человека. В порядке! просто проверьте, что этот код дает на выходе.
Некоторые факты об этих ключевых словах:–
- Когда вы устанавливаете функцию стрелки вместо обычной функции, ключевое слово this представляет собой лексическое значение this. А теперь что такое лексическая область видимости:
Лексическая область видимости в JavaScript означает, что переменная, определенная вне функции, может быть доступна внутри другой функции, определенной после объявления переменной. Но обратное неверно; переменные, определенные внутри функции, не будут доступны вне этой функции.
Пример этого
Стрелочные функции особенные: у них нет «своих» this
. Если мы ссылаемся на this
из такой функции, она берется из внешней «нормальной» функции.
Например, здесь arrow()
использует this
из внешнего метода user.sayHi()
:
let user = { firstName: "Ilya", sayHi() { let arrow = () => alert(this.firstName); arrow(); } };
user.sayHi(); // Ilya
- Теперь зачем использовать это ключевое слово?
Это ключевое слово дает гибкость. Как будто вы просто думаете, что если в объекте этого человека какой-либо экземпляр изменится на другое значение, например, если в будущем возраст изменится на 53, то в это время это ключевое слово появится на картинке, оно просто установит переменную возраста в метод getbirthYear, который нам не нужно беспокоиться об изменении все в этом коде.
Есть много фактов, связанных с этим ключевым словом, некоторые
это ключевое слово не привязано
В JavaScript ключевое слово this
ведет себя не так, как в большинстве других языков программирования. Его можно использовать в любой функции, даже если это не метод объекта.
В следующем примере нет синтаксической ошибки:
function sayHi() {
alert( this.name );
}
Обратите внимание, что стрелочные функции особенные: у них нет this
. Когда к this
обращаются внутри стрелочной функции, она берется извне.