Показать сообщение отдельно
  #1 (permalink)  
Старый 02.09.2014, 01:13
Новичок на форуме
Посмотреть профиль Найти все сообщения от govnocoder
 
Регистрация: 02.09.2014
Сообщений: 2

Зачем нужен bind?
Если я не прав, то поправьте, но я, хоть убей, не понимаю, нахрен нужна эта нелепая конструкция. Обычно, ее расхваливают, приводя примеры, к слову, столь же нелепые, как и она сама. Типо:
o={
arr: [],
add: function(x){this.arr.push(x)},
}

//удивительно(!!!), но так не работает:
g_arr=[1,2,3]
//g_arr.forEach(o.add)//TypeError: Cannot call method 'push' of undefined

//еще бы, this связывается с глобальным контекстом, с чего бы ей, внезапно, работать

g_arr.forEach(o.add, o)// O-o-o, а вот так работает
g_arr.forEach(o.add.bind(o)) // так тоже, это, типа, сильно лучше

// Или сделать вот так

o.add=o.add.bind(o)
g_arr.forEach(o.add)

Спрашивается, с чем ты изначально хотел связать this.arr? Если ты хотел связать ее с o.arr, то почему ты сразу не написал o.arr, зачем ты, сука, написал this? Это все напоминает такую ситуацию: стоматологу, дергающему зубы через жопу вместо того, чтобы, кагбе намекнуть, что можно попробовать делать это через рот, предоставляют годный инструмент для удобного дерганья через жопу.

Ладно, может я и заблуждаюсь, но хотелось бы увидеть пример хоть сколько-нибудь полезного применения.
Ответить с цитированием