Если вы такой же ленивый разработчик, как я, то, возможно, вы потратили немало времени и опыта, прежде чем начать использовать методы call (), bind () и apply () в своем коде JavaScript.

Когда я начал комфортно использовать эти методы в своем коде, я понял, что их поведение отличается в случае стрелочной функции и обычной функции. (WTF)

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

Давайте посмотрим на простую реализацию call с помощью обычной функции.

А теперь то же самое с функцией стрелки.

Как мы видим выше, в случае стрелочной функции контекст данных не передается. Причина в том, что функция Arrow не имеет собственного this. Мы все еще можем использовать его для передачи аргументов, первый аргумент игнорируется.

Применить аналогично вызову, когда передаются дополнительные параметры в виде массива.

ПРИМЕЧАНИЕ. В этих методах есть одна загвоздка. Как вы, возможно, знаете, функция имеет свойство arguments, которое содержит значение аргументов, переданных функции. Это хорошо поддерживается в случае обычной функции, но стрелочная функция не имеет этого свойства, поэтому вы не можете использовать аргументы в стрелочной функции.

А как насчет метода bind?

Мы используем bind для привязки значения this во время создания метода и передачи аргументов при его вызове. Но поскольку функция Arrow не имеет собственного свойства аргумента, привязка не удастся с функцией Arrow.

Надеюсь, вы нашли эту статью полезной. Я хотел бы услышать твои мысли. 😇

Спасибо за чтение. 😊

Ваше здоровье! 😃

Если вы найдете эту статью полезной, вы можете выразить свою признательность, нажав кнопку хлопка. Как говорится: «Когда мы даем с радостью и принимаем с благодарностью, все блаженны».