JavaScript高级程序设计(第三版)笔记——第一章

一.  ECMA-262、ECMAScript和JavaScript

        ECMA-262是一种标准。

        ECMAScript是由ECMA-262定义的一种新脚本语言。

        JavaScript应包括:ECMAScript(核心)、DOM(文档对象模型)、BOM(浏览器对象模型)。


二.  ECMA-262 

        ECMA-262标准没有参照Web浏览器,它规定了:   

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

三.  ECMAScript

        ECMAScript与浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出定义。

        Web浏览器只是ECMAScript实现可能的宿主之一。

        宿主环境不仅能提供基本的ECMAScript的实现,同时也会提供该语言的拓展。(如:DOM则利用 ECMAScript 的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。

        其他宿主环境包括 Node(一种服务端 JavaScript 平台)和 Adobe Flash 

        ECMAScript兼容

        ECMA-262 给出了 ECMAScript 兼容的定义 :

  • 支持 ECMA-262 描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
  • 支持 Unicode 字符标准。

        此外,兼容的实现还可以进行下列扩展。

  • 添加 ECMA-262 没有描述的“更多类型、值、对象、属性和函数”。 ECMA-262 所说的这些新增特性,主要是指该标准中没有规定的新对象和对象的新属性。
  • 支持 ECMA-262 没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正则表达式语法。) 


四.  文档对象模型(DOM,Document Object Model)

        DOM是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface)。

        HTML或XML页面中每个组成部分都是某种类型的节点,这些节点又包含不同的数据类型。

为什么要使用DOM

        如果不对 Netscape 和微软加以控制, Web 开发领域就会出现技术上两强割据,浏览器互不兼容的局面。此时,负责制定 Web 通信标准的 W3CWorld Wide Web Consortium,万维网联盟)开始着手规划 DOM。

DOM级别

DOM1级:由DOM核心(DOM Core)和DOM HTML这两个模块组成。

DOM核心规定的是如何映射基于XML的文档结构,以便简化对文档任意部分的访问和操作。

DOM HTML模块在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。

注意:DOM并不是只针对JavaScript的,很多别的语言也都实现了DOM。


DOM2级:在原来的基础上扩充了鼠标和用户界面事件、范围、遍历(跌迭代DOM文档的方法)等细分模块,而且通过对象接口增加了对 CSSCascading Style Sheets,层叠样式表)的支持。 

DOM2 级引入了下列新模块,也给出了众多新类型和新接口的定义。

  • DOM 视图( DOM Views):定义了跟踪不同文档(例如,应用 CSS 之前和之后的文档)视图的接口;
  • DOM 事件( DOM Events):定义了事件和事件处理的接口;
  • DOM 样式( DOM Style):定义了基于 CSS 为元素应用样式的接口;
  • DOM 遍历和范围( DOM Traversal and Range):定义了遍历和操作文档树的接口。

DOM3级:进一步扩展了 DOM:

引入了以统一方式加载和保存文档的方法——DOM 加载和保存( DOM Load and Save)模块中定义;

新增了验证文档的方法——在 DOM 验证( DOM Validation)模块中定义。 

注意:其他地方出现的DOM0级,是指DHTML。

其他DOM标准

        除了 DOM 核心和 DOM HTML 接口之外,另外几种语言还发布了只针对自己的 DOM 标准。下面列出的语言都是基于 XML 的,每种语言的 DOM 标准都添加了与特定语言相关的新方法和新接口:

  • SVGScalable Vector Graphic,可伸缩矢量图) 1.0
  •  MathMLMathematical Markup Language,数学标记语言) 1.0
  • SMILSynchronized Multimedia Integration Language,同步多媒体集成语言)。

Web浏览器对DOM的支持

        下表列出了主流浏览器对DOM标准的支持情况。

        


五.  浏览器对象模型(BOM,Browser Object Model)

        从根本上讲, BOM 只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 JavaScript 扩展算作 BOM 的一部分。下面就是一些这样的扩展:

  • 弹出新浏览器窗口的功能;
  • 移动、缩放和关闭浏览器窗口的功能;
  • 提供浏览器详细信息的 navigator 对象;
  • 提供浏览器所加载页面的详细信息的 location 对象;
  • 提供用户显示器分辨率详细信息的 screen 对象;
  • cookies 的支持;
  • XMLHttpRequest IE ActiveXObject 这样的自定义对象。

        BOM作为JavaScript实现的一部分没有相关的标准,因此每个浏览器都有自己的实现。现在有了 HTML5BOM 实现的细节有望朝着兼容性越来越高的方向发展。


六.  JavaScript版本

        下表列出了 Netscape/Mozilla 浏览器中JavaScript 版本号的递增过程: 

        

        注意:只有 Netscape/Mozilla 浏览器才遵循这种编号模式。例如IEJScript就采用了另一种版本命名方案。换句话说,JScript的版本号与上表中 JavaScript 的版本号之间不存在任何对应关系。而且,大多数浏览器在提及对 JavaScript 的支持情况时,一般都以 ECMAScript 兼容性和对 DOM 的支持情况为准。


七.  小结

        JavaScript 是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:

  • ECMAScript,由 ECMA-262 定义,提供核心语言功能;
  • 文档对象模型( DOM),提供访问和操作网页内容的方法和接口;
  • 浏览器对象模型( BOM),提供与浏览器交互的方法和接口。

        JavaScript 的这三个组成部分,在当前五个主要浏览器( IEFirefoxChromeSafari Opera)中都得到了不同程度的支持。

        其中,所有浏览器对 ECMAScript 3 版的支持大体上都还不错,而对ECMAScript 5 的支持程度越来越高,但对 DOM 的支持则彼此相差比较多。

        对已经正式纳入 HTML5 标准的 BOM 来说,尽管各浏览器都实现了某些众所周知的共同特性,但其他特性还是会因浏览器而异。


猜你喜欢

转载自blog.csdn.net/qq_36180015/article/details/80700456