Давайте будем простыми, чтобы вам не пришлось снова искать разницу между этими методами.
Простыми словами:
Используйте .bind (), если вы хотите, чтобы эта функция позже вызывалась с определенным контекстом, что полезно в событиях. Используйте .call () или .apply (), если вы хотите вызвать функцию немедленно, с изменением контекста.
context = this (или область, которую нужно использовать)
Вот и все! Буквально это так.
Все еще не понятно? Давайте подробнее рассмотрим их прототип и использование.
Прототипы:
function
.bind(context[, arg1[, arg2[, ...]]])function
.apply(context, [arrayOfArguments])function.call(
context, arg1, arg2, ...)
.связывать():
function.bind (context [, arg1 [, arg2 [,…]]])
Аргументы:
- context = контекст, который должен быть привязан к вызывающей функции, этот контекст будет использоваться позже.
- [, arg1 [, arg2 [,…]]]] = все остальные необязательные аргументы, требуемые вызывающей функцией.
Возвращает: ограниченную функцию, которая будет использовать контекст (ограниченный выше) и аргументы.
.подать заявление():
function.apply (context, [arrayOfArguments])
Аргументы:
- context = контекст, который теперь должен использоваться с вызывающей функцией.
- [arrayOfArguments] = аргументы, необходимые для вызывающей функции, переданные в массиве.
Возвращает: результат вызова фактической функции с указанным контекстом и аргументами.
.вызов():
function.call (context, arg1, arg2,…)
Аргументы:
- context = контекст, который теперь должен использоваться с вызывающей функцией.
- arg1, arg2,… = аргументы, необходимые для вызывающей функции (Примечание: эти аргументы передаются без массива, в отличие от .apply () ).
Возвращает: результат вызова фактической функции с указанным контекстом и аргументами.
Пример:
Надеемся, что теперь вы лучше знакомы с .bind (), .apply () и .call ().
Не стесняйтесь хлопать в ладоши, если эта статья помогла вам лучше понять эти методы. :)
Прочтите эти статьи (привязать, применить, позвонить), если вы хотите узнать больше.