Недавно мы рассмотрели тему ключевого слова «это» в javascript на нашем занятии по программированию в Технологическом институте Джорджии. Эта статья призвана быстро освежить в памяти и дать справку, чтобы быстро понять различные возможности.
ключевое слово "это"
Ключевое слово JavaScript this относится к объекту, которому оно принадлежит. Значение this различается в зависимости от того, как вызывается функция, поэтому мы не можем узнать значение this, просто взглянув на саму функцию, но нам нужно знать контекст, в котором эта функция вызывается.
Существует четыре правила для «этого» в порядке приоритета, которые можно использовать для определения того, с чем «это» связано.
Правило 1. Привязка по умолчанию
Когда мы вызываем объявление функции или функциональное выражение, ключевое слово this будет привязано к глобальному объекту.
Правило 2. Неявное связывание
Когда мы вызываем метод, значение this будет привязано к этому объекту; метод — это функция, являющаяся свойством объекта.
Правило 3. Явное связывание
Мы можем явно указать, к чему будет привязано ключевое слово this, используя одну из следующих опций: «.call()», «.apply()», «.bind()».
Правило 4. Новая привязка
Когда вызов функции продолжается с помощью нового ключевого слова this, оно будет привязано к вновь созданному объекту.
Бонусное правило: стрелочные функции
В стрелочных функциях this сохраняет то же значение, что и его родительская область.
Стрелочные функции имеют два основных преимущества.
1. У них более короткий синтаксис.
2. ‘this’ в стрелочной функции всегда будет принимать значение извне.
Вывод
Значение this обычно определяется контекстом выполнения функции. В глобальной области «это» относится к глобальному объекту. Объект, стоящий перед точкой, — это то, к чему будет привязано ключевое слово this. Мы можем установить значение this явно с помощью call(), bind() и apply(). Когда используется ключевое слово new (конструктор), this привязывается к создаваемому новому объекту. Стрелочные функции не связывают «это» — вместо этого «это» связывается лексически.
Спасибо за чтение.