初译:JavaScript Vs DOM Vs BOM, relationship explained
原文来自Rajakvk’s Blog:https://vkanakaraj.wordpress.com/2009/12/18/javascript-vs-dom-vs-bom-relationship-explained/
一个完整的Javascript执行由三个不同的部分组成:
- 核心(基于ECMAScript)
- BOM
- DOM
ECMAScript
ECMA-262是这样描述的:
“ECMAScript 为多种主机环境提供一个核心的脚本功能,因此撇开任何特定的主机环境来说,核心脚本语言是特定的。”
一个Web浏览器被认为是一个ECMAScript的主机环境,但不是唯一的主机环境,这里列出了另外的主机环境。
除去BOM和DOM,每一种浏览器都有自己对ECMAScript接口的实施方法。
BOM(Browser Object Model)
浏览器具有浏览器对象模型(BOM),它允许访问和操作浏览器窗口。使用BOM,开发人员可以移动窗口,更改状态栏中的文本,执行与页面内容不直接相关的其他操作。
正因为没有存在对BOM的一个标准,所以没一个浏览器都有自己的执行方法。
DOM(Document Object Model)
文档对象模型是一个HTML的应用程序接口(API),类似于XML。
DOM映射出整个页面作为一个由不同层次的节点组成的类似于树形结构的文档,并且使用DOMAPI可以移除、添加和替换节点。
DOM level 1:
由两个模块组成:
- DOM核心,提供了一种方法来映射一个基于XML的文档结构,以便方便的区访问和操作文档的任何部分。
- DOM HTML,通过添加特定的HTML对象和方法来拓展DOM的核心。
DOM level 2:
介绍了几种新的DOM模块来解决新接口的类型:
- DOM 视图 - 描述跟踪文档的各种视图的接口。(即CSS样式之前的文档和CSS样式之后的文档)
- DOM 事件 - 描述事件的接口。
- DOM 样式 - 描述解决基于CSS样式的接口。
- DOM 遍历和范围 - 描述遍历和操作文档树的接口。
DOM level 3:
进一步拓展DOM,引入方法并以统一的方式加载和保存文档(包含在一个名为DOM加载和保存的新模块中)以及炎症文档的方法(DOM验证)。在level3中,DOM核心是拓展到支持所有的XML 1.0包括XML Infoser,Xpath和XML基础。
请注意,DOM不是特定于Javascript的,实际上已经在很多其他的语言中实现了。然而对于Web浏览器,DOM在ECMAScript中已经被使用实现了,而且在javascript语言中占了很大的组成部分。