Почему DOM имеет и окно и сам?

Почему DOM называли объект self и другой звонил window когда они - то же самое? Добавить к беспорядку window назвали свойство self так:

window === window.self === self

Почему похож на это это? Какой я должен использовать?

5
задан hekevintran 9 May 2010 в 11:48
поделиться

3 ответа

self определяется средой javascript и указывает на [global] объект (но не является частью спецификации, поэтому может не быть там ), а окно является частью спецификации DOM. В большинстве браузеров окно используется как [глобальный] объект, но это не всегда так.

self == window.self неудивительно, поскольку это один и тот же объект - когда ищется self , он обнаруживается как свойство глобального объекта ( окно ). Фактически это то же самое, что window.self == window.self .

Как отмечалось в другом месте, для надежной ссылки на объект [global] вы должны определить его в своей sef, запустив var global = this; в глобальном контексте выполнения.

5
ответ дан 14 December 2019 в 13:29
поделиться

Глобальный self является сокращением для window.self. Они оба являются одним и тем же объектом.

Что касается того, почему существуют window и self, то в контексте веб-страницы self всегда равен window (насколько я знаю). Но я полагаю, что это не обязательно должно быть всегда так - Javascript/ECMAScript не ограничивается использованием в веб-странице, где есть DOM.

Что касается того, что использовать, оба должны быть безопасны для использования в контексте обычной веб-страницы AFAIK. См. комментарий @Nick, где приведены веские аргументы в пользу использования window, однако.

0
ответ дан 14 December 2019 в 13:29
поделиться

Когда вы вызываете self , это window.self , то же самое там вроде любое другое глобальное свойство (например, location на самом деле является window.location ).

Причина, по которой он там? Обычно для таких проверок:

if(window.top != window.self) {
  alert("We're in a frame");
}
1
ответ дан 14 December 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: