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. в общем то что не надо прибегать к имени объекта больше одного раза