JavaScript的构成
常常会被问到JavaScript是什么东西。听到很多回答都是:“是一个前端的语言。”这种说法比较宽泛,严格来说一个完整的JavaScript由下列三个不同的部分组成:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript可以看成是JS这门语言的规范和基础,暂不做详述,我们今天的重点是说说DOM和BOM。
文档对象模型(DOM)
DOM把整个页面映射为一个多层节点结构,其中包含标签,包含数据。DOM提供的API可以让我们对各种节点进行增删改查。jQuery的元素选择器也就是以这堆API为核心封装出来的。
最初微软和网景分别给出了不同形式的HTML来支持web开发,显然,这堆开发人员是极为不友好的,违背了web的跨平台天性。为此,负责制定Web通信标准的W3C开始规划DOM。
DOM级别
如果有人看到DOM标准是从DOM0开始的话,实际上是不准确的,如果非要加进来,DOM0应该指的是微软和网景最初支持的DHTML。所以我们认为DOM标准的发展应该是下文中的1,2,3级。
DOM1级
1998年10月,DOM1级成为W3C的推荐标准。
DOM1级的两个模块:
- DOM 核心
- DOM HTML
DOM核心依然作为规定如何映射XML文档结构来简化对文档的访问和操作。DOM HTML则是在DOM核心的基础上添加了对象和方法。
DOM2级
DOM2级为了让文档的操作更为精细和便捷,扩充了更多模块。其中包含:
- DOM视图:定义了跟踪不同文档视图的接口;
- DOM时间:定义了事件和事件处理的接口;
- DOM样式:定义了基于CSS为元素的应用样式接口;
- DOM便利和范围:定义了遍历和操作文档树的接口;
DOM3级
DOM3级的推出也是为了扩展DOM,增加DOM的健壮性和通用性:
- DOM加载和保存模块:引入了以统一方式加载和保存文档的方法;
- DOM验证模块:引入验证文档的方法;
- DOM核心模块扩展:支持XML1.0规范(XML Infoset,XPath和XML Base)
其他DOM支持
列出如下几种W3C推荐的对DOM支持的标准:
- SVG
- MathML
- SMIL
浏览器对象模型(BOM)
BOM可以控制浏览器显示的页面以外的部分。
- 弹出新的浏览器窗口;
- 移动,缩放和关闭浏览器窗口;
- 提供浏览器详细信息的navigator对象;
- 提供浏览器所加载页面的详细信息的location对象;
- 提供用户显示器分辨率详细信息的screen对象;
- 对cookies的支持;
- 像XMLHttpRequert和IE的ActiveXObject这样的自定义对象。 BOM是没有标准的,没个浏览器都有自己的实现。但是大多数浏览器会遵循某些默认规则。
总结
总的来说DOM提供访问和操作网页内容的方法和接口,BOM提供与浏览器交互的方法和接口。