Показать сообщение отдельно
  #3 (permalink)  
Старый 02.06.2013, 00:33
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Сообщение от Aetae Посмотреть сообщение
Дело в том, что функция вызванная как x.func() выполняется в контексте x(за исключением особых случаев), а вызванная как просто func() - в текущем контексте.
Понял.


Сообщение от Aetae Посмотреть сообщение
P.S. Нет такой уж критической надобности переписывать весь уже написанный код. Если ваша страница\приложение в принципе на работает без полученных данных то юзер так или иначе вынужден будет ждать загрузки.)
Да я уже начал перелопачивать. И тут вылазят все новые и новые нюансы.

Есть у меня еще один вопрос.

Предположим, инит объекта вызывается из объекта более "верхнего" уровня. Вот так:

Код:
function UpLevelClass() 
{

 this.init = function() 
 {
  alert('Up level class this 1:'+this);

  worker=new Worker();
  worker.init(this.initNext);
 }; 

 this.initNext = function() 
 {
  alert('Up level class this 2:'+this);
 };

}
Код:
function Worker() 
{

 this.init = function(upLevelCallBack) 
 {
  ... всякие действия для инита

  upLevelCallBack();
 };
Спрашивается, в каком контексте будет выполнена функция initNext()? По-моему, совсем не в контесте класса UpLevelClass.

Теперь вопрос: Как в функции init() класса Worker узнать контекст функции upLevelCallBack? Ведь нам ее надо вызвать в контексте класса UpLevelClass, а не в текущем контексте!
Ответить с цитированием