JavaScript 的实现包含什么?
完整的JavaScript 实现包含以下3个部分。
(1)核心(ECMAScript)
(2)文档对象模型(DOM)
(3)浏览器对象模型(BOM)
ECMAScript
ECMAScript 是一个 “标准化一门通用,跨平台,厂商中立的脚本语言的语法和语义”的规范,有国际化组织负责维护和制定。
ECMAScript 没有输入和输出之类的方法。
Web 浏览器只是ECMAScript 实现存在的一种宿主环境。宿主环境提供ECMAScript的基准实现和与环境必须的拓展。拓展(比如DOM)使用ECMAScript 核心类型的语法,提供特定于环境的额外功能。如果不涉及浏览器的话,javaScript 中的ECMAScript 核心主要包含一下部分:
-
语法 -
类型 -
语句 -
关键字 -
操作符 -
全局对象
DOM
文档对象模型(DOM)是一个应用程序接口(API),用于在HTML 中使用拓展的XML。
DOM 是基于ECMAScript 的规范,针对浏览器宿主环境实现的额外的拓展。
DOM Level1规范:由两个模块组成:DOM Core 和DOM HTML。
DOM Level2 规范:
DOM 视图:描述追踪文档不同视图的接口(如应用CSS 样式前后的文档)的接口。
DOM 事件:描述事件及事件处理的接口。
DOM 样式:描述处理元素CSS 样式的接口。
DOM 遍历和范围:描述遍历和操作DOM树的接口。
BOM
浏览器对象模型(BOM)API,用于支持访问和操作浏览器的窗口。使用BOM,开发者可以操控浏览器显示页面之外的部分。
总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的拓展都归在BOM的范畴内。比如,下面就是这样一些拓展:
弹出新浏览器窗口的能力
移动,缩放和关闭浏览器窗口的能力
navigator 对象,提供关于浏览器的详尽信息。
location对象,提供浏览器加载页面的详尽信息
screen 对象,提供关于用户屏幕分辨率的详尽信息
performance 对象,提供浏览器占用内存,导航行为和时间统计的详尽信息。
对cookie 的支持。
其他自定义对象,如XMLHttpRequest 和IE的ActiveObject。
ECMAScript 和 JavaScript 的关系
ECMAScript 不是JavaScript的子集,JavaScript 也不是ECMAScript的子集,两者只是有部分的交集。
ECMAScript 是一种描述语言功能的设计规范,JavaScript 只是这种规范的实现之一,ECMAScript 还有其他的实现,比如node.js,Adobe Flash.
JavaScript这门脚本语言不仅仅包含了 ECMAScript 规范规定的功能,它还实现了 关于浏览器操作的API (BOM),以及其他功能。