Сила ключевого слова «это» в Javascript.

Слово «это» в Javascript — очень короткое слово, состоящее всего из четырех букв. «Это» усложнило мою жизнь с того момента, как я узнал об этом во время посещения Bootcamp. Я уверен, что многие могут понять разочарование, почесать затылок и в целом понять, как или почему «это» работает?

В тот момент, когда я сначала подумал, что уловил концепцию и почувствовал себя хорошо, приступая к погружению, почесывание головы вернулось. Это было нехорошее предчувствие, учитывая, что это не новая тема. Поэтому я решил научить себя (снова) и вернуться к основам, чтобы понять великие способности «его».

Что означает «это» в Javascript?

В общей лексике «это» — это определитель, который используется для обозначения человека или предмета, находящегося поблизости.

А в Javascript «это» относится к контексту, в котором вызывается функция, и значение может отличаться, поскольку оно зависит от того, как вызывается функция.

Какими способами можно вызвать функцию?

Ну, есть пять способов, которыми мы можем вызвать функцию в javascript:

  • Бесплатный вызов функции
  • Вызов метода
  • Вызов конструктора
  • Косвенный вызов: Bind, Apply, Call
  • Вызов глобальной ссылки

Хотя у нас есть только один оператор вызова (), существует пять шаблонов для вызова функции, каждый из которых имеет свои характеристики и ведет себя по-разному при оценке значения «this». Давайте обсудим каждый шаблон отдельно.

Вызов бесплатного метода

Функция вызывается без какой-либо ссылки на какой-либо конкретный объект, как указано в имени, она свободна. Может существовать только тогда, когда переменная объявлена ​​с ключевым словом «var». В этом шаблоне «это» относится к глобальному объекту.

Вызов конструктора

В этом вызове ключевого слова «это» относится к экземпляру пустого объекта. Это происходит, когда мы создаем функцию-конструктор. Мы можем добавить столько пар ключ/значение, сколько нам нужно, в объект, который существует внутри функции-конструктора. В приведенном ниже примере мы можем построить наш taco, поскольку он является экземпляром функции-конструктора Taco. В Javascript для создания конструктора используется функция PascalCase. Дополнительное значение в функции конструктора имеет оператор «new». Оператор должен использоваться до вызова функции. Если мы пропустим этот шаг, мы будем ссылаться на глобальный объект. И функция не будет иметь правильного возврата, конечное значение будет неопределенным.

Вызов метода

Что это за метод? В Javascript «метод» — это когда значение вашего объекта является функцией. Первые методы, которые мы изучаем при погружении в Javascript, это: push(), pop(), shift(), unshift(), и это методы массива, поскольку они существуют в глобальном объекте массива. Основные характеристики:

  • функция, которая вызывается как метод определенного объекта
  • «это» будет относиться к значению конкретного объекта
  • функция является типом данных и передается как значение объекта

Косвенная ссылка: Call(), Apply() и Bind()

До сих пор у нас была функция внутри объекта. Однако что, если они не являются ими? Это когда методы функции, такие как call(), apply() и bind(), играют большую роль в подключении объекта к функции. Они общаются, звонят, обращаются или связывают друг друга.

  • при вызове первый аргумент представляет собой конкретный ссылочный объект со значением, к которому необходимо получить доступ
  • должна быть цепочкой к функции
  • у них есть отличия:

call() — аргументы передаются в виде списка

apply() — аргументы передаются в виде массива

  • связывать()

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

Bind не будет вызывать функцию, а создаст новую, которую можно использовать при необходимости.

Новые функции должны быть вызваны, чтобы произошло какое-либо действие.

Глобальная ссылка

Ссылается на глобальный объект окна или глобальную ссылку.

Вывод

Завершая тему, есть полезная мантра, чтобы быстро распознать правильное применение «этого»:

Что находится слева от точки (.) в названии времени.

Однако это не относится к косвенному методу вызова. Было бы слишком просто, если бы это было так.

Если мы будем следовать правилам, у нас должно получиться лучше с концепцией, и мы будем меньше чесать затылок.

Спасибо за прочтение, следите за новостями!