В Function.prototype доступны три метода: call(), apply() и bind(). Это означает, что эти методы всегда доступны по умолчанию при создании функций.

Давайте посмотрим на приведенный ниже код, прежде чем переходить к вызову, применению и связыванию методов.

При запуске метода print() мы замечаем, что он тесно связан с obj1, который действует как контекст метода.

Как использовать функцию вызова в JavaScript

Вызов — это функция, которая помогает вам изменить контекст вызывающей функции. С точки зрения непрофессионала, это помогает вам заменить значение this внутри функции любым значением, которое вы хотите.

Пример:

С помощью метода call мы можем использовать другой объект obj2 в качестве контекста для функции печати внутри объекта obj1. Кроме того, в качестве параметров передаются аргументы.

Как использовать функцию «Применить» в JavaScript

Apply очень похожа на функцию вызова. Единственное отличие состоит в том, что в apply вы можете передать массив в качестве списка аргументов.

Возьмем тот же пример, что и вызов, но здесь с методом apply:

Как использовать функцию привязки в JavaScript

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

Здесь мы можем выполнить функцию печати позже в программе с помощью userbind1 (привязанной к obj1) и userbind2 (привязанной к obj2).

Заключение

Вызов и подача заявки взаимозаменяемы. Оба немедленно выполняют текущую функцию. Вам нужно решить, что проще отправить: массив или список аргументов, разделенных запятыми. Вы можете запомнить, рассматривая Call как запятую (разделенный список) и Apply как массив.

В то время как Bind создает новую функцию, для которой this будет задано значение первого параметра, переданного в bind().