В 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().