Задать вопрос

Bind и call — в чем разница?

Перечитал несколько статей. Пишется везде, что bind создает обертку-функцию, а call вызывает сразу, но у меня такая же обертка создается и работает через call.

Подскажите в чем у них главная разница?

function f(a, b) {
  alert( this );
  alert( a + b );
}


var g = f.bind('test');
      g(1, 2);
      
var h = f.call('test2');
      h(1, 2);
  • Вопрос задан
  • 2393 просмотра
Подписаться 5 Простой Комментировать
Решения вопроса 3
rockon404
@rockon404
Frontend Developer
но у меня такая же обертка создается и работает через call.

Да ну?

Правильно будет так:
f.call('test2', 1, 2);
Ответ написан
Комментировать
@arsenalsar
Bind создает постоянный метод для обьекта, а call для одноразового использования, так пишет Флэнеган.
Ответ написан
Комментировать
blazecolour
@blazecolour
call вызывает функцию с заданным контекстом, а bind, по своей сути есть обертка, привязывающая контекст, которую можно передать в функцию.

call - позднее связывание, bind - раннее связывание.

call-apply-decorators
bind

Ваш пример c call, без передачи аргументов, как написали уже выше, работать не будет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
02 февр. 2025, в 10:45
1000 руб./за проект
02 февр. 2025, в 10:19
7000 руб./за проект
02 февр. 2025, в 08:12
2500 руб./за проект