Сила ключевого слова «это» в 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 не будет вызывать функцию, а создаст новую, которую можно использовать при необходимости.
Новые функции должны быть вызваны, чтобы произошло какое-либо действие.
Глобальная ссылка
Ссылается на глобальный объект окна или глобальную ссылку.
Вывод
Завершая тему, есть полезная мантра, чтобы быстро распознать правильное применение «этого»:
Что находится слева от точки (.) в названии времени.
Однако это не относится к косвенному методу вызова. Было бы слишком просто, если бы это было так.
Если мы будем следовать правилам, у нас должно получиться лучше с концепцией, и мы будем меньше чесать затылок.
Спасибо за прочтение, следите за новостями!