试图理解js中窗口和文档对象之间的区别

时间:2013-06-21 02:57:05

标签: javascript

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

4 个答案:

答案 0 :(得分:30)

window object表示当前的浏览上下文。它包含window.locationwindow.historywindow.screenwindow.statuswindow.document等内容。此外,它还包含有关框架设置的信息(framesparenttopself属性),并包含重要的界面,例如applicationCache,{ {1}},XMLHttpRequestsetTimeoutescapeconsole。最后但并非最不重要的是,它充当JavaScript的全局范围,即所有全局变量都是它的属性。

相比之下,(localStoragedocument object代表当前在window.中加载的DOM - 它只是其中的一部分。文档包含window(通常为documentElement),<html>集合,forms字符串,cookie或其location等信息。它还实现了一个不同的接口(可能有多个Documents,例如通过ajax获取的XML文档),使用readyStategetElementById等方法。

答案 1 :(得分:21)

非常详细的解释:Read here

基本上,窗口是浏览器的窗口,文档是其中的HTML页面。 enter image description here

答案 2 :(得分:3)

在浏览器中运行的JavaScript具有Window作为顶级。这意味着全局变量将成为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

因此窗口将包含所有全局对象,这意味着: parseInt与window.parseInt相同。

窗口甚至包含自己:

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

窗口没有getElementById,children,childNodes ... funciton因为窗口不是Html元素而且文档是。

答案 3 :(得分:1)

JavaScript应用程序具有上下文,即定义值的范围。对于浏览器,“root”或“global”对象为window

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

此外,如果您在一个不在函数中的脚本中,您可以定义类似的内容:

var x = 10;

你真正做的是在全局对象中定义一个变量。在浏览器的情况下,这将在window

因此window.x的值为10.