Странный самообъект в оконном объекте - PullRequest
5 голосов
/ 10 августа 2011

Я не могу понять, почему window меньше self, а self меньше window объекта.

если вы зайдете в dev-tools или Firebug и напишите window, у вас есть DOM window объект, который self находится под этим объектом.Странная часть в том, что window снова под self!

Вы можете написать

window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self.window.self

, и все же вы получите window объект!

Как?!

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

В ответ на один из моих комментариев:

Это круговая ссылка, поэтому она не заканчивается. Только компилятор создает одну ссылку. Это просто ссылка на исходный объект, на который была создана ссылка. Вот почему вы можете do window.window.window ... Вот так: var obj = {}; obj.obj = obj ;. Создана только одна ссылка, но это ссылка на оригинал, так что вы можете сделать obj.obj.obj.obj.obj.obj.obj === obj.

Комментарий можно увидеть здесь: Является ли окно действительно глобальным в Javascript?

1 голос
/ 10 августа 2011

См. эту страницу , а см. Здесь . window.window - это ссылка на себя, поэтому вы можете повторить window.window.window ... window, она всегда вернет текущее окно. self возвращает ссылку на текущее окно, поэтому здесь то же самое, он всегда будет возвращать DOMWindow Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...