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);
  • Вопрос задан
  • 2385 просмотров
Решения вопроса 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, без передачи аргументов, как написали уже выше, работать не будет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект