我试图理解js中窗口和文档对象之间的区别。我在网上查了一下,但我还是没有清楚的了解。据我所知:窗口就像一个超级文档,它包含了文档对象。所以,如果我使用firefox打开一个页面:localhost / test.js,我可以说浏览器:firefox是window对象,文件test.js是文档对象吗?
答案 0 :(得分:30)
window
object表示当前的浏览上下文。它包含window.location
,window.history
,window.screen
,window.status
或window.document
等内容。此外,它还包含有关框架设置的信息(frames
,parent
,top
,self
属性),并包含重要的界面,例如applicationCache
,{ {1}},XMLHttpRequest
,setTimeout
,escape
或console
。最后但并非最不重要的是,它充当JavaScript的全局范围,即所有全局变量都是它的属性。
相比之下,(localStorage
)document
object代表当前在window.
中加载的DOM - 它只是其中的一部分。文档包含window
(通常为documentElement
),<html>
集合,forms
字符串,cookie
或其location
等信息。它还实现了一个不同的接口(可能有多个Document
s,例如通过ajax获取的XML文档),使用readyState
或getElementById
等方法。
答案 1 :(得分:21)
非常详细的解释:Read here
基本上,窗口是浏览器的窗口,文档是其中的HTML页面。
答案 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
的属性(变量),用于存储文档的表示形式。该文档包含当前加载的文档的模型表示(例如title
,anchors
等)。 window
对象表示显示文档的浏览器窗口。
此外,如果您在一个不在函数中的脚本中,您可以定义类似的内容:
var x = 10;
你真正做的是在全局对象中定义一个变量。在浏览器的情况下,这将在window
。
因此window.x
的值为10.