Есть ли что-либо выше window

Ответ

В браузерном JavaScript window является глобальным объектом верхнего уровня. Однако в некоторых окружениях (например, Node.js) есть global, а в Web Workers — self.

В браузере можно проверить:

console.log(window === window.parent); // true для основной вкладки
console.log(window === window.top); // true, если нет iframe

Если страница встроена в iframe, window.parent и window.top будут ссылаться на родительские окна, но технически это всё равно объекты window. Выше них в браузере ничего нет.

Ответ 18+ 🔞

А, ну это классика, блядь! Сидишь ты такой, пишешь на JavaScript, и тут — бац! — вопрос про window. Ну, слушай сюда, сейчас разжуем.

Вот представь: ты в браузере, как царь в своём замке. Твой трон — это объект window, ёпта! Он глобальный, он вездесущий, он — король всей этой движухи. Хочешь переменную объявить на весь мир? Кидай её прямо в window, и все подданные-скрипты будут кланяться.

Но жизнь, сука, не так проста! Вылезаешь ты из своего уютного браузерного мирка, а там — Node.js! И там уже не window, а global, этот лысый дядька в свитере. А в Web Workers, этих трудягах-невидимках, — self, ихний собственный заводик. Пиздец, бардак, один хуй везде по-разному!

А теперь про iframe, эти долбанные окошки в окне. Сидит твоя страничка в iframe, как узник в камере. Спросишь у неё: «window === window.parent?» — а она тебе: «Ну, если надзиратель (родительский фрейм) один, то да, true, блядь!». А спросишь: «window === window.top?» — а она, если её не запихнули в iframe внутри iframe внутри iframe (ёбаный матрёшка-пиздец!), тоже скажет true.

Но суть-то в чём, а? Что выше window.top? А нихуя не выше! Это потолок, крыша, последний этаж, блядь! Дальше только сам браузер, а это уже не наша, JavaScript'овая, юрисдикция. Там драконы Си++ живут и кушают твою оперативку на завтрак.

Короче, запомни: в браузере window — это и есть вселенная. Всё остальное — просто её отражения в кривых зеркалах.