this+callback
Если у нас есть чужая глобальная функция
method(a,b, callback); method отрабатывает, вызывает функцию callback. 1) Мне вообще представлялось логичным, что this для вызова callback сохранится, если нет-это можно считать логической ошибкой? 2) нормальный фикс ситуации? ничего проще не придумывается. var f=(function(){var temp=this; return (function(e){ callback.call(temp,e) }) }).call(this); method(a,b,f); |
1) если функция вызывается обычным способом, не как метод, то this получает значение глобального объекта (или undefined в строгом режиме) - это правильное поведение согласно спецификации.
2) этот код можно сократить: var f=callback.bind(this); method(a, b, f); |
1) Я, естественно,вызываю method.apply(this) а не method, и не получаю нужного this у callback
2) Bind же в jQuery, если его нету, именно так и эмулируется. |
Цитата:
https://developer.mozilla.org/en/Jav.../Function/bind |
Точнее в IE<9 он отсутствует, для которых в jQuery и не поленились написать фикс.
|
1) если вы вызываете method.apply(this), то функция method получает this, а если ещё внутри method вызывается 2-ой аргумент, то этой функции автоматически не передаётся это значение в качестве this, его нужно отдельно привязать с помощью callback.bind(this).
|
Цитата:
|
Часовой пояс GMT +3, время: 07:39. |