Показать сообщение отдельно
  #15 (permalink)  
Старый 24.08.2012, 23:35
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Уже ближе, но не совсем правильно.
Аргументы - это значения (языковые значения), которые передаются функции при её вызове. В некоторых других языках программирования в функцию могут передаваться переменные, но Джаваскрипт умеет передавать только значения.
Что касается объектов, то именно ссылки на объект являются языковыми значениями, сами объекты ими не являются.
Кроме обычных аргументов в функцию передаётся также аргумент this, который доступен внутри функции под ключевым словом this.
bind привязывает к функции некоторые значения: один из них используется в качестве аргумента this, остальные (есть они есть) - в качестве обычных аргументов.
function f(a, b, c) {
  alert(this+" "+a+" "+b+" "+c);
}
var g=f.bind(42, 1, 2); // привязываем 42 в качестве this; 1, 2 в качестве обычных аргументов
g(3); // 3 - новый аргумент в функцию f
g.call(43, 3); //переданный явно аргумент this игнорируется

Привязанные аргументы хранятся при новой функции (возвращённой bind, в данном примере - g), старая функция (f) ничего не знает ни о них, ни о новой функции (g).

Последний раз редактировалось oneguy, 24.08.2012 в 23:43.
Ответить с цитированием