На самом деле - window.document и документ внутри окна - это не одно и то же. Хром

Интересно, почему одна и та же сущность по-разному представлена ​​внутри объекта window браузера, вызываемого в консоли:

  1. Если мы вызовем только window внутри консоли браузера, у нас будет вся информация о браузере. Где document будет представлен как объектная сущность, включающая различные свойства и функции (включая DOM).
  2. Если мы вызовем document напрямую с помощью команды window.document, у нас будет только его DOM-представление.

Итак, почему это происходит? Я действительно не могу понять.

Спасибо.

Возможный дубликат В чем разница между окном, экраном и документом в Javascript?

devlin carnate 03.01.2019 22:46

Нет, это совсем другой вопрос. @devlincarnate

Max Travis 03.01.2019 22:47

@devlincarnate, это другой вопрос. Удалите отметку о дублировании в моем посте! Я не спрашиваю о размерах DOM, вместо этого меня интересуют различия в документе и window.document!

Max Travis 03.01.2019 22:51

Я не знаю правильного ответа, но полагаю, что это всего лишь вопрос интерпретации. Разработчики Chrome просто предположили, что в консоли, когда вы вводите document, вы хотите увидеть DOM, тогда как если вам нужна вся информация, вы просто набираете window.document.

Oliver Tušla 03.01.2019 22:54

@ OliverTušla, ха-ха, просто введите то, что вы написали выше - window.document, и вы удивитесь тому, что вы увидите в консоли .... Вы не правы

Max Travis 03.01.2019 22:56

Извините, это означало набрать window и увидеть свойство собственными глазами.

Oliver Tušla 03.01.2019 22:58

Есть этот (точный) дубликат javascript window.document в консоли (который не имеет принятого или одобренного ответа и, следовательно, недоступен в качестве цели для дублирования). Он закрыт как обман В чем разница между console.dir и console.info?, который использует window.document в одном из своих ответов в качестве демонстрации.

Andreas 03.01.2019 23:02

если ваше приложение открывает новое окно. например childWindow = window.open (// некоторые параметры); у вас есть window.document и childWindow.document

sferret 03.01.2019 23:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
133
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Именно так работают инструменты разработчика Chrome. У них есть несколько различных форматов вывода информации на консоль. Узлы Dom, которые представляют собой тип объекта, получили свою собственную причудливую реализацию, поскольку они очень часто встречаются в веб-разработке. Итак, когда вы делаете window.document, он выбирает именно этот формат для вывода.

Для других типов объектов они выводят его в другом формате, и это то, что он делает, когда вы делаете window. Это правда, что вы можете развернуть это, чтобы перейти к window.document, но инструменты разработчика продолжают отображать его в том же формате, а не пытаться вложить один формат в другой.

«Итак, когда вы делаете window.document, это формат, который он выбирает для вывода». - использовать console.dir(window.document) вместо console.info()
Andreas 03.01.2019 23:05

@Andreas Я не думаю, что он делает что-то из этого, он просто набирает document и window.document прямо в консоли.

Barmar 03.01.2019 23:06

прямо из моего хромового отладчика:

>window.document === document
true

Documentantion передает, что window.document - это просто ссылка на документ.

Однако, даже если они ссылаются на один и тот же документ, документ может содержать специальные геттеры и сеттеры, которые перекрывают те из window.document ...

Геттеры и сеттеры не могут сказать, какое выражение использовалось для доступа к ним.

Barmar 03.01.2019 23:05

Да, но геттеры и сеттеры Windows запускаются раньше, чем получатели и сеттеры документов, и они потенциально могут их переопределить. Если хотите, я могу привести вам пример.

Nuno Sousa 03.01.2019 23:15

Я понимаю, о чем вы говорите. Запись только document не дает доступа к нему через объект Window, поэтому он не использует геттер / сеттер.

Barmar 03.01.2019 23:17

Да, безусловно, это просто то, что происходит с мог, и это может объяснить разницу в выводе. Я понятия не имею, есть ли это. (вероятно, нет)

Nuno Sousa 03.01.2019 23:18

Другие вопросы по теме