要清楚地理解JavaScript,DOM和BOM之间的关系,我们需要了解JavaScript是怎样实现的。
实际上,完整的JavaScript实现由3个不同的部分组成:
- 核心(基于ECMAScript规范)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMA-262这样描述ECMAScript(European Computer Manufacturing Association,欧洲计算机制造协会):
“ECMAScript can provide core scripting capabilities for a variety of host environments, and therefore the core scripting language is specified…apart from any particular host environment.”
“ECMAScript可以为各种各样的宿主环境提供核心脚本功能,因而核心脚本语言的描述独立于任何特定的宿主环境。”
网页浏览器可以视为ECMAScript的宿主环境,但并不是其唯一的宿主环境。这里(http://vkanakaraj.wordpress.com/2009/10/28/javascript-hosts/)列举了一些其他的宿主环境。
除了DOM和BOM,每个浏览器都有其自己的ECMAScript接口实现。
文档对象模型 (DOM)
文档对象模型(DOM)像XML一样,也是HTML的应用程序接口(API)。
DOM将整个页面映射到一个由树形节点层次结构组成的文档之上,节点可以通过DOMAPI被移除、添加或者替换。
DOM level 1 包含2个模块: DOM核心, 提供了一种方式,对基于XML的文档结构的映射,使得文档任何部分的访问和操作都变得很方便; DOM HTML,通过添加HTML专用的对象和方法对DOM核心进行扩展。
DOM Level 2 引入了几种DOM的新方法来处理新类型的接口:
- DOM Views — 描述了跟踪文档的各种视图的接口(就是说,CSS样式之前和之后的文档)
- DOM Events — 描述了事件接口
- DOM Style — 描述了处理基于CSS的样式的接口
- DOM Traversal and Range — 描述了遍历和操作一棵文档树的接口
DOM Level 3 进一步对DOM进行了扩展,引入了使用统一方式加载和保存文档的方法(包含在一个叫做DOM Load and Save的新模块中)在Level 3,DOM核心被扩展以支持XML 1.0的所有部分,包括XML Infoset, XPath和XML Base。
请注意DOM并非JavaScript专用的,并且事实上已经被许多其他语言实现了。但对于Web浏览器,DOM使用ECMAScript实现,并且现在是JavaScript语言的一个最大的组成部分。
其他DOM:
- Scalable Vector Graphics (SVG)
- Mathematical Markup Language (MathML)
- Synchronized Multimedia Integration Language (SMIL)
浏览器对象模型(BOM)
浏览器支持浏览器对象模型(BOM),允许对浏览器窗体的访问和操作。使用BOM,开发者可以移动窗体,改变状态栏中的文字,以及实现其他与页面内容不直接相关的操作。
由于还没有BOM的标准,因此各个浏览器都有其自行实现的BOM。
原文链接:http://vkanakaraj.wordpress.com/2009/12/18/javascript-vs-dom-vs-bom-relationship-explained/
本文链接:http://bookshadow.com/weblog/2014/11/05/javascript-vs-dom-vs-bom-relationship-explained/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。