• 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
      欢迎大家指正错误。
  • 相关阅读:
    Visula Studio 2013 初始化静态浮点型数据在C++类内
    catkin_make与gtest出现冲突的问题与解决
    用Visual studio2012在Windows8上开发内核驱动监视线程创建
    用Visual studio2012在Windows8上开发内核驱动监视进程创建
    TEA加密算法的C/C++实现
    说说某游戏保护驱动中驱动黑名单的具体实现
    [Windows驱动开发](四)内存管理
    [Windows驱动开发](三)基础知识——驱动例程
    [Windows驱动开发](二)基础知识——数据结构
    [Windows驱动开发](一)序言
  • 原文地址:https://www.cnblogs.com/fengzheqi/p/3779621.html
Copyright © 2020-2023  润新知