# JavaScript 顶级对象之间的关系

**URL:** <https://www.isharkfly.com/t/javascript/8457>\
**Category:** 前端\
**Created:** [October 21, 2012, 7:08am UTC](https://www.isharkfly.com/t/javascript/8457 "2012-10-21T07:08:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 21, 2012, 7:08am UTC](https://www.isharkfly.com/t/javascript/8457/1 "2012-10-21T07:08:46Z")

</div>

我们来模拟浏览器载入某标准HTML 的过程来阐述window、frames、location 等几种常见的顶级对象之间的关系。

首先参考如下包含框架集的标准HTML 文档：[code]

[/code]将上述代码保存为Sample.html，鼠标双击，系统调用默认的浏览器，生成window 对象，打开Sample.html 文档后，生成screen、navigator、location、history、frames[]和document 等对象。

window 对象包含当前浏览器窗口中的所有对象，为对象访问过程忠默认的顶级对象，如引用该对象的alert( )方法，可将window.alert(msg)直接改写为alert(msg)，同样window.document.forms[1]可改写为document.forms[1]；

screen 对象包含当前浏览器运行的物理环境信息，如当前屏幕分辨率；

navigator 对象包含当前浏览器的相关信息，如浏览器版本等；

location 对象以URL 形式保存正在浏览的文档相关信息，如路径等；

history 对象包含浏览器当前窗口的访问历史列表，如单击链接进入新页面，则原始页面地址列入当前窗口的访问历史列表中；

frames对象包含当前Window 页面中的框架数组成员，如实例中的两个框架，每个框架都包含一个独立的document 对象；

document 对象包含HTML 文档中的HTML 标记和构成文档内容的文本的对象，在每个单独保存的HTML 文档中都直接包含一个document 对象。

由上面的分析，可看出从浏览器打开文档至关闭文档期间，screen 和navigator 对象不变（用户不改变其硬件和软件设置），且与文档无关；location 对象代表当前文档位置的相关信息，与文档地址（相对地址或绝对位置）及访问方法相关；history 对象则是当前文档页面的访问列表，与文档中链接及页面跳转情况有关；frames和document 对象则是浏览器载入时根据文档结构生成的对象，决定于文档。

理解这几个顶级对象的关系有助于深入了解浏览器解释运行HTML 文档过程中各对象的生成步骤和相互之间如何影响彼此。
