我试图了解 js 中窗口和文档对象之间的区别。我在网上查了下,还是没有很清楚的了解。据我所知:窗口就像一个超级文档,它包含文档对象。那么如果我用firefox打开一个页面:localhost/test.js,可以说browser:firefox是window对象,文件test.js是document对象吗?
4 回答
该window
对象表示当前的浏览上下文。它包含诸如window.location
, window.history
, window.screen
,window.status
或 之类的东西window.document
。此外,它还包含有关框架设置的信息(frames
、parent
、top
、属性),并包含重要的接口,self
例如applicationCache
、XMLHttpRequest
、setTimeout
、或。最后但同样重要的是,它充当 JavaScript 的全局范围,即所有全局变量都是它的属性。escape
console
localStorage
相反, ( window.
)document
对象表示当前加载的 DOM window
- 它只是其中的一部分。一个文档包含诸如documentElement
(通常<html>
)、forms
集合、cookie
字符串、它location
的或它的信息之类的信息readyState
。它还实现了一个不同的接口(可能有多个Document
s,例如通过 ajax 获得的 XML 文档),使用类似getElementById
or的方法addEventListener
。
一个非常详细的解释:阅读这里
基本上 window 是浏览器的窗口,而 document 是其中的 HTML 页面。
在浏览器中运行的 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 是。
JavaScript 应用程序具有上下文,即定义值的范围。在浏览器的情况下,“根”或“全局”对象是window
.
该window
对象有一个名为的属性(变量)document
,它存储文档的表示。该文档包含当前加载的文档的模型表示(例如title
、anchors
等)。该window
对象表示显示文档的浏览器窗口。
此外,如果您在不在函数中的脚本中定义如下内容:
var x = 10;
实际上,您所做的是在全局对象中定义一个变量。在浏览器的情况下,这将在window
.
所以window.x
会有 10 的值。