死亡是一座永恒的灯塔

0%

第一章 JavaScript 简介

章节内容:

  • JavaScript历史回顾
  • JavaScript是什么
  • JavaScript与ECMAScript的关系
  • JavaScript的不同版本

JavaScript诞生于1995年,当时主要目的是处理由服务端语言负责的一些输入验证的操作。

1.1 JavaScript 简史

1995年,布兰登·艾奇(Brendan Eich)发布JavaScript 1.0。

1997年,以 JavaScript 1.1 为蓝本的建议被提交给了欧洲计算机制造商协会(ECMA,European Computer Manufacturers Association)。该协会指定 39号技术委员会(TC39,Technical Committee #39) 负责“标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义”。TC39由来自 Netscape、Sun、微软、Borland及其他关注脚本语言 发展的公司的程序员组成,他们经过数月的努力完成了 ECMA-262——定义一种名为 ECMAScript(发 音为“ek-ma-script”)的新脚本语言的标准。

1998年,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission,国标标准化组织和国际电工委员会)也采用了 ECMAScript作为标准(即 ISO/IEC-16262)。 自此以后,浏览器开发商就开始致力于将 ECMAScript 作为各自 JavaScript 实现的基础,也在不同程度 上取得了成功。

1.2 JavaScript 实现

虽然 JavaScript 和 ECMAScript 通常都被人们用来表达 相同的含义,但 JavaScript的含义却比 ECMA-262中规定的 要多得多。没错,一个完整的 JavaScript 实现应该由下列三 个不同的部分组成。

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

1.2.1 ECMAScript

由 ECMA-262定义的 ECMAScript与 Web 浏览器没有依赖关系。实际上,这门语言本身并不包含输 入和输出定义。ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。 我们常见的 Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。宿主环境不仅提供基本的 ECMAScript 实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如 DOM,则利用 ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他 宿主环境包括 Node(一种服务端 JavaScript平台)和 Adobe Flash。 既然 ECMA-262 标准没有参照 Web 浏览器,那它都规定了些什么内容呢?大致说来,它规定了这 门语言的下列组成部分:

  • 语法

  • 类型

  • 语句

  • 关键字

  • 保留字

  • 操作符

  • 对象

ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。JavaScript实现了 ECMAScript, Adobe ActionScript同样也实现了 ECMAScript。

1.2.2 文档对象模型(DOM)

文档对象模型(DOM,Document Object Model)是针对 XML但经过扩展用于 HTML的应用程序编 程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层节点结构。HTML 或 XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。

通过 DOM 创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助 DOM提供的 API,开发人员可以轻松自如地删除、添加、替换或修改任何节点。

1.2.3 浏览器对象模型(BOM)

Internet Explorer 3和 Netscape Navigator 3有一个共同的特色,那就是支持可以访问和操作浏览器窗 口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用 BOM可以控制浏览器显示的页面 以外的部分。而 BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为 JavaScript实现 的一部分但却没有相关的标准。这个问题在 HTML5中得到了解决,HTML5致力于把很多 BOM功能写 入正式规范。HTML5发布后,很多关于 BOM的困惑烟消云散。 从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 JavaScript扩展 算作 BOM的一部分。下面就是一些这样的扩展:

  • 弹出新浏览器窗口的功能;

  • 移动、缩放和关闭浏览器窗口的功能;

  • 提供浏览器详细信息的 navigator 对象;

  • 提供浏览器所加载页面的详细信息的 location 对象;

  • 提供用户显示器分辨率详细信息的 screen 对象;

  • 对 cookies的支持;

  • 像 XMLHttpRequest 和 IE的 ActiveXObject 这样的自定义对象。

由于没有 BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如 要有 window 对象和 navigator 对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属 性和方法。现在有了 HTML5,BOM实现的细节有望朝着兼容性越来越高的方向发展。第 8章将深入讨 论 BOM。

1.3 JavaScript 版本

作为 Netscape“继承人”的 Mozilla公司,是目前唯一还在沿用初的 JavaScript版本编号序列的浏 览器开发商。在 Netscape将源代码提交给开源的 Mozilla项目的时候,JavaScript在浏览器中的后一个 版本号是1.3。(如前所述,1.4版是只针对服务器的实现。)后来,随着Mozilla基金会继续开发JavaScript, 添加新的特性、关键字和语法,JavaScript 的版本号继续递增。

1.4 小结

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

  • ECMAScript,由 ECMA-262定义,提供核心语言功能;

  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;

  • 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

JavaScript的这三个组成部分,在当前五个主要浏览器(IE、Firefox、Chrome、Safari和 Opera)中 都得到了不同程度的支持。其中,所有浏览器对 ECMAScript 第 3 版的支持大体上都还不错,而对 ECMAScript 5的支持程度越来越高,但对 DOM的支持则彼此相差比较多。对已经正式纳入 HTML5标 准的 BOM来说,尽管各浏览器都实现了某些众所周知的共同特性,但其他特性还是会因浏览器而异。

坚持技术分享,您的支持将鼓励我继续创作!