11

我试图了解 js 中窗口和文档对象之间的区别。我在网上查了下,还是没有很清楚的了解。据我所知:窗口就像一个超级文档,它包含文档对象。那么如果我用firefox打开一个页面:localhost/test.js,可以说browser:firefox是window对象,文件test.js是document对象吗?

4

4 回答 4

32

window对象表示当前的浏览上下文。它包含诸如window.location, window.history, window.screen,window.status或 之类的东西window.document。此外,它还包含有关框架设置的信息(framesparenttop、属性),并包含重要的接口,self例如applicationCacheXMLHttpRequestsetTimeout、或。最后但同样重要的是,它充当 JavaScript 的全局范围,即所有全局变量都是它的属性。escapeconsolelocalStorage

相反, ( window.)document对象表示当前加载的 DOM window- 它只是其中的一部分。一个文档包含诸如documentElement(通常<html>)、forms集合、cookie字符串、它location的或它的信息之类的信息readyState。它还实现了一个不同的接口(可能有多个Documents,例如通过 ajax 获得的 XML 文档),使用类似getElementByIdor的方法addEventListener

于 2013-06-21T03:44:50.783 回答
22

一个非常详细的解释:阅读这里

基本上 window 是浏览器的窗口,而 document 是其中的 HTML 页面。 在此处输入图像描述

于 2013-06-21T02:59:14.583 回答
3

在浏览器中运行的 JavaScript 将 Window 作为其顶层。这意味着全局变量将成为窗口的属性:

// this code is not inside a function
var global1=22;
function test(){
  var local=88;
  window.global2=99;
  console.log(local);//logs 88 because
    // local is available within the body
    // of this function
  console.log(global1);//logs 22
}
console.log(typeof local);//logs undefined becaue were
  // outside the funciton body
test();
console.log(global2);//logs 99 because we added
   // global2 as a property of window

所以 window 将包含你所有的全局对象,这意味着:parseInt 和 window.parseInt 一样。

Window 甚至包含它自己,所以:

window===window.window.window;//is true

window 没有 getElementById、children、childNodes ... 函数,因为 window 不是 Html 元素,而 document 是。

于 2013-06-21T03:03:44.037 回答
1

JavaScript 应用程序具有上下文,即定义值的范围。在浏览器的情况下,“根”或“全局”对象是window.

window对象有一个名为的属性(变量)document,它存储文档的表示。该文档包含当前加载的文档的模型表示(例如titleanchors等)。该window对象表示显示文档的浏览器窗口。

此外,如果您在不在函数中的脚本中定义如下内容:

var x = 10;

实际上,您所做的是在全局对象中定义一个变量。在浏览器的情况下,这将在window.

所以window.x会有 10 的值。

于 2013-06-21T03:21:03.777 回答