Если вы такой же ленивый разработчик, как я, то, возможно, вы потратили немало времени и опыта, прежде чем начать использовать методы call (), bind () и apply () в своем коде JavaScript.
Когда я начал комфортно использовать эти методы в своем коде, я понял, что их поведение отличается в случае стрелочной функции и обычной функции. (WTF)
Сама по себе разница невелика, она больше связана с концепцией стрелочной функции.
Давайте посмотрим на простую реализацию call с помощью обычной функции.
А теперь то же самое с функцией стрелки.
Как мы видим выше, в случае стрелочной функции контекст данных не передается. Причина в том, что функция Arrow не имеет собственного this. Мы все еще можем использовать его для передачи аргументов, первый аргумент игнорируется.
Применить аналогично вызову, когда передаются дополнительные параметры в виде массива.
ПРИМЕЧАНИЕ. В этих методах есть одна загвоздка. Как вы, возможно, знаете, функция имеет свойство arguments, которое содержит значение аргументов, переданных функции. Это хорошо поддерживается в случае обычной функции, но стрелочная функция не имеет этого свойства, поэтому вы не можете использовать аргументы в стрелочной функции.
А как насчет метода bind?
Мы используем bind для привязки значения this во время создания метода и передачи аргументов при его вызове. Но поскольку функция Arrow не имеет собственного свойства аргумента, привязка не удастся с функцией Arrow.
Надеюсь, вы нашли эту статью полезной. Я хотел бы услышать твои мысли. 😇
Спасибо за чтение. 😊
Ваше здоровье! 😃
Если вы найдете эту статью полезной, вы можете выразить свою признательность, нажав кнопку хлопка. Как говорится: «Когда мы даем с радостью и принимаем с благодарностью, все блаженны».