真的 - window.document 和 window 里面的文档是不一样的。 Chrome

Really - window.document and document inside window is not the same. Chrome

我想知道为什么同一个实体在浏览器中具有不同的表示 window 在控制台中调用的对象:

  1. 如果我们只在浏览器控制台中调用 window,我们将获得完整的浏览器信息。其中 document 将被表示为类似对象的实体,包括各种道具和功能(包括 DOM)。
  2. 如果我们直接通过 window.document 命令调用 document,我们将只有它的 DOM 表示。

那么,为什么会这样?实在想不通

谢谢。

这正是 chrome 开发人员工具的工作方式。他们有几种不同的格式,可以在控制台中输出信息。 Dom 节点是一种对象,它们有自己的奇特实现,因为它们在 Web 开发中很常见。因此,当您执行 window.document 时,这就是它选择输出的格式。

对于其他类型的对象,它们以不同的格式输出,这就是您执行 window 时它正在做的事情。的确,您可以扩展它以深入研究 window.document,但开发工具会继续以相同的格式显示它,而不是试图将一种格式嵌套在另一种格式中。

直接来自我的 chrome 调试器:

>window.document === document
true

文档转达了 window.document 只是对文档的引用。

然而,即使它们引用同一个文档,文档 也可能包含特殊的 getter 和 setter,它们会覆盖 window.document...