Показать сообщение отдельно
  #15 (permalink)  
Старый 15.10.2012, 23:06
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Hekumok,
гляди пояснения :
((self /*self - левая (отбрасываемая) переменная, ссылающаяся на parent (ссылка)*/ = parent/*parent - это собсно
 наш объект*/ = {
  method1 : function () {
    alert('я method1 объекта parent');
  },
  
  child : {
     method1 : function () {
       this.parent.method1(); // опа рабоает
       parent.method1(); // здесь тоже работает
     }
  }
}).child.parent = self/*в self мы сохранили ссылку на
parent, то есть устанавливаем parent.child.parent = self, что
идентично parent.child.parent = parent, и так как self === parent
прибегать к имени объекта нам не надо (что и требуется)*/), self = window;/*все, переменная self теперь уже не нужна и мы возвращаем её на место - по умолчанию self === window*/
parent.child.method1();//работает
alert(self);//[window object]

P.S. в общем то что не надо прибегать к имени объекта больше одного раза
Ответить с цитированием