JavaScript是一门非常简单的语言,又是一门非常复杂的语言。说他简单,是因为学会使用它需要片刻功夫;而说它复杂,是因为要真正掌握它则需要数年时间。要想全面理解和掌握JavaScript,关键在于弄清楚它的本质,历史和局限性。
一个完整的JavaScript由三种不同的部分组成
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript与web浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出定义。我们常见的web浏览器只是ECMAScript实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也会提供语言的扩展,以便语言与环境之间对接交互。而这些扩展--如DOM,则利用ECMAScript的核心类型和语法提供更多具体的功能,以便实现针对环境的操作。其他的宿主环境包括Node和Adobe Flash。
ECMAScript的组成部分包括:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
文档对象模型(DOM)
文档对象模型(DOM,Document Object Model)是针对XML但经过扩展对于HTML的应用程序编程接口(API,Application Programming Interface)。DOM把整个网页映射为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
<
通过DOM创建的这个文档的树形图,开发人员获得控制页面内容和结构的主动权。借助DOM提供API,开发人员可以轻松自如地删除,添加,替换或修改任何节点。
DOM 并不只是针对JavaScript的,很多别的语言也都实现了DOM。不过,在Web浏览器中,基于ECMAScript实现的DOM的确已经成为JavaScript这门语言的一个重要组成部分
浏览器对象模型(BOM)
浏览器对象模型(BOM,Browser Object Model)。开发人员使用 BOM 可以控制浏览器显示的页面 以外的部分。而 BOM 真正与众不同的地方(也是经常会导致问题的地方),还是它作为 JavaScript 实现 的一部分但却没有相关的标准。这个问题在 HTML5 中得到了解决,HTML5 致力于把很多 BOM 功能写 入正式规范。HTML5 发布后,很多关于 BOM 的困惑烟消云散。
从根本上讲,BOM 只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 JavaScript 扩展 算作 BOM 的一部分。
下面就是一些这样的扩展:
弹出新浏览器窗口的功能;
移动、缩放和关闭浏览器窗口的功能;
提供浏览器详细信息的 navigator 对象;
提供浏览器所加载页面的详细信息的 location 对象;
提供用户显示器分辨率详细信息的 screen 对象;
对 cookies 的支持;
像 XMLHttpRequest 和 IE 的 ActiveXObject 这样的自定义对象。
由于没有 BOM 标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如 要有 window 对象和 navigator 对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属 性和方法。现在有了 HTML5,BOM 实现的细节有望朝着兼容性越来越高的方向发展