Я пытаюсь рассказать о том, как работает javascript bind().
Я вижу, что если я делаю
var f = function (a) { ... }
var g = f.bind(obj);
g(1)
то f вызывается с obj как this и 1 как a.
Я думал, что g - это функция-обертка вокруг f.
Но когда я делаю
var f = function (a) { ... }
var g = f.bind(obj);
g.call(1)
то f вызывается с 1 как this и a undefined.
Итак, кажется, что g не просто простая оболочка, но call каким-то образом отличает нормальные и связанные функции.
Еще одна вещь: я не могу частично применять функцию больше раз.
var f = function (a) { ... }
var g = f.bind(obj);
var h = g.bind(1);
h();
Тогда f вызывается с obj как this и a undefined.
В чем причина такого поведения?
Edit
Конструкции в этом вопросе на самом деле неправильны, см. принятый ответ о том, как им это нравится (в общем, я не заметил, что call и bind всегда должен иметь аргумент контекста в качестве первого аргумента).