javascript高级程序设计

上传人:xzh****18 文档编号:41475870 上传时间:2018-05-29 格式:DOC 页数:14 大小:157.50KB
返回 下载 相关 举报
javascript高级程序设计_第1页
第1页 / 共14页
javascript高级程序设计_第2页
第2页 / 共14页
javascript高级程序设计_第3页
第3页 / 共14页
javascript高级程序设计_第4页
第4页 / 共14页
javascript高级程序设计_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《javascript高级程序设计》由会员分享,可在线阅读,更多相关《javascript高级程序设计(14页珍藏版)》请在金锄头文库上搜索。

1、当 JavaScript 在 1995 年首次出现时,它的主要目的还只是处理一些输入的有效性验证,而在此之前这个工作是留给诸如 Perl 之类的服务器端语言来完成的。之前,要确定一个特定的字段是否空缺或者输入的值是否无效,必须与服务器进行往返的交互。Netscape Navigator 通过引入 JavaScript 来试图改变这种情况。这种直接在客户端处理一些基本的有效性验证的能力,在刚普及使用电话线调制解调器(28.8kbit/s 的速率)的时代,可是一个令人振奋的新特性。但以如此慢的速度与服务器往返交互,对耐性是一种考验。从那以后,JavaScript 便成长为市面上每一个主要 Web

2、浏览器都具备的重要特性。同时 JavaScript 不仅仅局限于简单的数据有效性验证,现在几乎可以与浏览器窗口及其内容的每一个方面进行交互。微软公司在早期版本的浏览器中仅支持自己的客户端脚本语言VBScript,但最后也不得不加入了自己的 JavaScript 实现。从本章中你可以了解到 JavaScript 是如何以及为何出现的,从它简陋的开始到如今涵盖各种特性的实现。为了能充分发挥 JavaScript 全部的潜力,了解它的本质、历史及局限性是十分重要的。确切地说,本章着重讲解: JavaScript 和客户端脚本编程的起源; JavaScript 语言的不同部分; 与 JavaScrip

3、t 相关的标准; 主流 Web 浏览器中的 JavaScript 支持。1.1 历史简述历史简述大概在 1992 年,一家称作 Nombas 的公司开始开发一种叫做 C 减减(C-minus-minus,简称 Cmm)的嵌入式脚本语言。Cmm 背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C(和 C+)足够的相似性,以便开发人员能很快学会。这个脚本语言捆绑在一个叫做 CEnvi 的共享软件产品中,它首次向开发人员展示了这种语言的威力。Nombas 最终把 Cmm 的名字改成了 ScriptEase,原因是后面的部分(mm)听起来过于“消极”,同时字母 C“令

4、人害怕”(http:/ ScriptEase 已经成为了 Nombas 产品背后的主要驱动力。当 Netscape Navigator 崭露头角时,Nombas 开发了一个可以嵌入网页中的 CEnvi 的版本。这些早期的试验称为 Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而 Nombas 丝毫没有料到它的理念将会成为因特网的一块重要基石。当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8kbit/s 的调制解调器来连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅

5、仅为了简单的表单有效性验证,就要与服务器端进行多次的往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒钟的处理后,看到的却是一条告诉你忘记填写一个必要的字段。那时正处于技术革新最前沿的 Netscape,开始认真考虑一种开发客户端脚本语言来解决简单的处理问题。当时工作于 Netscape 的 Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,当时的目的是同时在浏览器和服务器(本来要叫它 LiveWire 的)端使用它。Netscape 与 Sun公司联手及时完成 Li

6、veScript 实现。就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。Netspace 的赌注最终得到回报,JavaScript 从此变成了因特网的必备组件。因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军浏览器,发布了 IE 3.0 并搭载了一个 JavaScript 的克隆版,叫做 JScript(这样命名是为了避免与 Netscape 潜在的许可纠纷)。微软

7、步入 Web 浏览器领域的这重要一步虽然令其声名狼藉,但也成为 JavaScript 语言发展过程中的重要一步。在微软进入后,有 3 种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 Java- Script、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。与 C 和其他编程语言不同的是,JavaScript 并没有一个标准来统一其语法或特性,而这 3 种不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言标准化显然已经势在必行。尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的

8、部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的(见图 1-1): 核心(ECMAScript); 文档对象模型(DOM); 浏览器对象模型(BOM)。图 1-11.2.1 ECMAScriptECMAScript 并不与任何具体浏览器相绑定,实际上,它也没有提到用于任何用户输入输出的方法(这点与 C 这类语言不同,它需要依赖外部的库来完成这类任务)。那么什么才是 ECMAScript 呢?ECMA-262 标准(第 2 段)的描述如下:“ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是

9、与任何特定的宿主环境分开进行规定的”Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase 和 Macromedia 同时用在 Flash 与 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。那么 ECMAScript 在浏览器之外规定了些什么呢?简单地说,ECMAScript 描述了以下内容: 语法; 类型; 语句; 关键字; 保留字; 运算符; 对象。ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他的

10、语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样(见图 1-2)。图 1-2每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM(在以下几节中再讨论)。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host,WSH)、Macromedia 的 Flash 与 Director MX 中的 ActionScript,以及 Nombas ScriptEase。1ECMAScript 的版本ECMAScript 分成几个不同的版本,它

11、是在一个叫做 ECMA-262 的标准中定义的。和其他标准一样,ECMA-262 会被编辑和更新。当有了主要更新时,就会发布一个标准的新版。最新 ECMA-262 的版本是第三版,于 1999 年 12 月发布。ECMA-262 的第一个版在根本上是和 Netscape 的 JavaScript 1.1 一样的,只是把所有与浏览器相关的代码删除了,不过有一些小的调整。首先,ECMA-262 要求对Unicode 标准的支持(以便支持多语言)。第二,它要求对象是平台无关的(Netscape 的 JavaScript 1.1 事实上有不同的对象实现,例如 Date 对象,是依赖于平台的)。这也是

12、JavaScript 1.1 和 1.2 为什么不符合 ECMA-262 规范第一版的主要原因。ECMA-262 的第二版大部分更新本质上是编辑性的。这次标准的更新是为了与 ISO/IEC- 16262 的严格一致,也并没有特别添加、更改和删除内容。ECMAScript实现一般不会遵守第二版。EMCA-262 第三版是该标准第一次真正的更新。它提供了对字符串处理、错误定义和数值输出的更新。同时,它还增加了正则表达式、新的控制语句、try.catch异常处理的支持,以及一些为使标准国际化而做的小改动。一般来说,它标志着 ECMAScript 成为一种真正的编程语言的到来。2何谓 ECMAScri

13、pt 符合性在 ECMA-262 中,ECMAScript 符合性(conformance)有明确的定义。一个脚本语言必须满足以下四项基本原则: 符合的实现必须按照 ECMA-262 中所描述的支持所有的“类型、值、对象、属性、函数和程序语法及语义”(ECMA-262,第 1 页); 符合的实现必须支持 Unicode 字符标准(UCS); 符合的实现可以增加没有在 ECMA-262 中指定的“额外的类型、值、对象、属性和函数”。ECMA-262 将这些增加描述为规范中未给定的新对象或对象的新属性; 符合的实现可以支持没有在 ECMA-262 中定义的“程序和正则表达式语法”(意思是可以替换或

14、者扩展内建的正则表达式支持)。所有的 ECMAScript 实现必须符合以上标准。3Web 浏览器中的 ECMAScript 支持含有 JavaScript 1.1 的 Netscape Navigator 3.0 在 1996 年发布。然后,JavaScript 1.1 规范被作为一个新标准的草案提交给 ECMA。有了 JavaScript 轰动性的流行,Netscape 十分高兴地开始开发 1.2 版。但有一个问题:ECMA 并未接受 Netscape 的草案。在 Netscape Navigator 3.0 发布后不久,微软就发布了IE 3.0。该版本的 IE 含有 JScript 1.

15、0(微软自己的 JavaScript 实现的名称),原本计划可以与 JavaScript 1.1 相提并论。然而,由于文档不全以及一些不当的重复特性,JScript 1.0 远远没有达到 JavaScript 1.1 的水平。在 ECMA-262 第一版定稿之前,发布含有 JavaScript 1.2 的 Netscape Navigator 4.0 是在 1997 年,在那年晚些时候,ECMA-262 标准被接受并标准化。因此,JavaScript 1.2 并不和 ECMAScript 的第一版兼容,虽然 ECMAScript 应该基于 JavaScript 1.1。JScript 的下一步

16、升级是 IE 4.0 中加入的 JScript 3.0(2.0 版是随微软的 IIS 3.0 一起发布的,但并未包含在浏览器中)微软大力宣传 JScript 3.0 是世界上第一个真正符合 ECMA 标准的脚本语言。而那时,ECMA-262 还并没有最终定稿,所以 JScript 3.0 也遭受了和 JavaScript 1.2 同样的命运它还是没能符合最终的 ECMAScript 标准。Netscape 选择在 Netscape Navigator 4.06 中升级它的 JavaScript 实现。JavaScript 1.3 使 Netscape 终于完全符合了 ECMAScript 第一版。Netscape 加入了对 Unicode 标准的支持,并让所有的对象保留了在 JavaScript 1.2 中引入的新特性的同时实现了平台独立。当 Netscape 将它的源代码作为 Mozilla 项

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号