JavaScript与ECMA、BOM、DOM的关系

914 阅读2分钟

很多时候,我们把ECMA拿来与js表达相同的含义,但实际上,js包含的内容要比ECMA多的多。一个完整的JavaScript应该由下面三个部分构成。

JS核心(ECMA)

从本质上来说,ECMA定义的只是这门语言的基础,在此基础上我们可以构建更完善的脚本。比如我们常见的web浏览器就是ECMA的宿主环境之一,它实现了对ECMA的支持,并且提供了该语言的扩展,方便语言与环境间对接交互,浏览器本身跟ECMA并没有直接依赖关系。

大致来说,ECMA规定了这门语言的下列组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

文档对象模型(DOM)

文档对象模型是针对XML但经过扩展用于html的应用程序编程接口(API)。
DOM把整个页面映射成一个多层节点结构(DOM树),通过DOM树,开发人员获得了控制页面内容与结构的主动权,借助DOM提供的API可以轻松的增删查改任何节点。

浏览器对象模型(BOM)

浏览器对象模型提供了访问和操作浏览器窗口的接口。
开发人员可以使用BOM控制浏览器显示的页面以外的部分。在HTML5以前,BOM并没有一个相关的标准,大多数浏览器厂商都有自己对它的实现,HTML5出现后,BOM实现的细节有望朝着兼容性越来越高的方向发展。
从本质上讲,BOM只负责处理浏览器窗口和框架,但我们大多数时候把所有针对浏览器的js扩展都算作BOM的一部分,比如下面的一些扩展:

  • 弹出新浏览器窗口的功能;
  • 移动、缩放和关闭浏览器窗口的功能;
  • 提供浏览器详细信息的navigator对象;
  • 提供浏览器所加载页面详细信息的location对象;
  • 对cookie的支持;
  • 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象;