了解 Window 对象
JavaScript 中的 window 对象是一个包罗万象的对象,原因有一下三点:
- Web 浏览器就是将 Global 全局对象作为 window 对象的一部分加以实现。
- DOM 中的核心对象 document ,作为 window 对象的一个属性而存在。
- window 对象的属性还包括了 BOM 提供的对象:location navigator screen history 和 window。
在 ECMAScript 规范中,JS对象可分为三类:
- 本地对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError 和 开发者自定义的对象。
- 内置对象(开发者不必明确实例化内置对象,它已被实例化了):
-
Global 对象:
顶层函数(全局函数):decodeURI()、decodeURIComponent()、encodeURI()、encodeURIComponent()、escape()、unescape() 、eval()、getClass()、isFinite()、isNaN()、Number()、parseFloat()、parseInt()、String()
顶层属性(全局属性):Infinity、java、NaN、Packages、undefined -
Math 对象:valueOf()、max(x,y)、floor(x)、random()、random()、......
-
- 宿主对象:所有 BOM 和 DOM 对象都是宿主对象。
- 由 DOM 提供的类型有:Node、Document、Element、Text、Comment、CDATASection、DocumentType、DocumentFragment、Attr
- 由 BOM 提供的对象有:location、navigator、screen、history 和 window
而这些对象,全都可以在 window 对象中找到。console.log(window)
为了理解 window 对象,我们必须理清楚一下四个概念:
- BOM:(浏览器对象模型)是为了操作浏览器而定义的一组接口。是各个浏览器厂商根据 DOM 在各自浏览器上的实现,表现为不同浏览器定义有差别,实现方式不同。
- DOM:(文档对象模型)是为了操作文档而定义的一组接口。是 W3C 的标准,即所有浏览器公共遵守的标准
- ECMAScript:JS的核心语法,提供了 JS 的语法和规范。
- document: DOM 树中的一个重要的 node(节点),通常为子根节点。由于一个页面可能有多个
<iframe/>
,所以一个页面可以有多个document节点。document 也是 BOM 中 window 对象下的子对象。 - Global 全局对象
window 的广义和狭义的理解
- 广义:window 作为一个对象,被 Web 浏览器定义为 全局对象使用,他包换了 本地对象、内置对象、宿主对象 的所有 类型 和 方法。作为全局对象,在调用他的类型、方法 和 属性时,可以省略
window.
这个前缀
console.log(window.document === document) // true
- 狭义:从字面意思理解,window 就是窗口的意思,记录着窗口的相关信息,这些信息有 BOM 提供,详细内容请查看《BOM》