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

Сообщение от platedz
Насколько я понял, bind передает все свойства одного объекта другому.
Совершенно неверно. bind не передаёт никаких свойств объектов. Он привязывает аргументы к функции.
Инструкция
one.m.bind(two)(" = ") //bind привязывает объект two в качестве аргумента this к функции one.m

эквивалентна
one.m.call(two, " = ")

Пример:
var one =  { m: function(arg){alert("SW"+arg+this.s);
  alert(JSON.stringify(this));
  alert(this===two);}}
    var two = { s: "sw"}
        one.m.bind(two)(" = ")

Как видим, при вызове функции, возвращаемой выражением one.m.bind(two) аргумент this принимает значение, равное two.
Ответить с цитированием