首页 > 代码库 > javascript与ECMAScript、DOM、BOM的关系

javascript与ECMAScript、DOM、BOM的关系

在初学javascript时,经常会看见javascript dom、ECMAScript等名词,一直不明白,今天查阅了一些资料和评论,简单写一下。

  1. JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象;
  2. DOM 描述了处理网页内容的方法和接口;
  3. BOM 描述了与浏览器进行交互的方法和接口。

ECMAScript  

先简单了解javascript的发展历史,在因特网发展的初期,为了减少客户端与服务器的交互(比如表单的验证一类),提高网上冲浪的效率,当时著名的Netscape公司开发了一种名为livescript的脚本语言,当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。后来即将推出2.0版本的时候,为了顺应java的时髦名声,Netscape公司就其更名为javascript(所以javascript和java的区别相当于雷锋和雷峰塔),从此javascript就成为因特网的必备组件。当时微软并不甘心,克隆了javascript的一个版本,为了避免版权的问题,微软就把它命名为Jscript,同时,当时也存在另外的一个版本,CEnvi 的 ScriptEase。

  然而这样的局面显然是不利于浏览器发展的,所以业界不断呼吁制定脚本语言的标准,最后在各方的努力下,这事也成了,由ECMA(欧洲计算机制造商协会)来制定相应的规范,这样就出现了ECMAScript。但是需要注意的是,ECMAScript只是制定了标准,定义了脚本语言的所有属性、方法和对象,并没有涉及脚本语言的具体实现。其他脚本语言(像javascript和Jscript)以 ECMAScript 作为基准来实现功能和扩展,进而发展出了dom和bom。

  现在我们常用的浏览器脚本语言是javascript,而javascript由ECMAscript、dom和bom组成。

  

DOM

DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:

<html>
  <head>
    <title>Sample Page</title>
  </head>
  <body>
    <p>hello world!</p>
  </body>
</html>

这段代码可以用 DOM 绘制成一个节点层次图:

DOM 节点层次图

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。

BOM

IE 3.0 和 Netscape Navigator 3.0 提供了一种特性 - BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的标准。

BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括:

  • 弹出新的浏览器窗口
  • 移动、关闭浏览器窗口以及调整窗口大小
  • 提供 Web 浏览器详细信息的定位对象
  • 提供用户屏幕分辨率详细信息的屏幕对象
  • 对 cookie 的支持
  • IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象

由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

  

  1. 参考与引用:http://www.w3school.com.cn/js/pro_js_history.asp
                     http://www.oschina.net/question/142412_72751
    欢迎大家指正错误。