ECMAScript 3.1 和 4:斗争之年不幸的是,随后几年JavaScript 发展并不顺利。从 ECMAScript 4 的工作一开始,委员会中就开始出现了强烈的分歧。有一群人认为 JavaScript 需要一些特性来成为一种更强大的语言,这样就可以用于大型应用程序开发。这群人提出了很多特性,这些特性涉及面广,变化大。另一群人认为大型应用程序开发不是 JavaScript 适合的方向。由于缺乏一致意见,加上新提出的某些特性的复杂性,将 ECMAScript 4 的发布变得遥遥无期。 实际上针对ECMAScript 4的工作在 1999 年 版本 3 刚出炉的时候,就已经开始了。网景公司内部讨论了很多有意义的特性。不过,实现这些特性的兴趣已经逐渐减弱,并且 2003 年刚过没多久,在新版本 ECMAScript 上的工作就停止了。一个临时报告发布了,有些实现者,比如 Adobe(ActionScript)和微软(JScript.NET),使用这个报告作为其引擎的基础。2005 年,在 AJAX 和
ECMAScript 4草案将这个新版本描述为编写大型应用程序而设计。如果你已熟悉 ECMAScript 6/2015,就会注意到很多来自 ECMAScript 4 的特性被重新引入了。
一则有趣的历史片段是如下的Google Docs spreadsheet,这个文件展示了几种 JavaScript 引擎的实现状态,以及涉及其中的派系的讨论。 开发 ECMAScript 4 的委员会由 Adobe、Mozilla、Opera(以非官方身份)和微软组成。Yahoo 在大部分标准和特性已经决定了后,进入了这个委员会。Doug Crockford,一个有影响力的 JavaScript 开发者,就是 Yahoo 为此送进委员会的那个人。他鼓吹他的担忧,强烈反对很多 ECMAScript 4 提议的修改。他从微软的代表那里获得了强烈的支持。Crockford 本人说到:
开始是怀疑,后来就变成强势反对 JavaScript。微软拒绝接受 ECMAScript 4 的所有部分,并且准备采取各种必要的行动来阻止标准获得通过(甚至法律诉讼)。幸运的是,委员会中的人设法阻止了法律斗争。不过,缺乏共识有效地阻止了 ECMAScript 4 推进。
Crockford 想出一个点子来推进,就是重新弄一个标准,这个标准更简单,减少一些特性集,这样所有人都可以同意:没有新语法,只有来自使用该语言的经历中的实际提升。这个提案后来被称为 ECMAScript 3.1。 有一段时间,两种标准并存,并且设置了两个非正式的委员会。不过,ECMAScript 4 太复杂,没办法在面对冲突的情况完成。ECMAScript 3.1 更简单,并且尽管在 ECMA 中有斗争,它还是完成了。 ECMAScript 4 的结束出现在 2008 年,Eich 通过一封电子邮件,发送了一次奥斯陆会议的内容提要,详细描述了 ECMAScrpt 走向和版本 3.1 和 4 的未来。 这次会议的结论是:
总之,ECMAScript 4 花了近 8 年的时间开发,最后却被废弃了。这对涉及的所有人来说都是一个沉重的教训。 单词 "Harmony(和谐)" 出现在上面的结论中。这是将来对 JavaScript 扩展时项目的标准名称。Harmony 会是所有人都同意的方案。在 ECMAScript 3.1 发布后(以版本 5 的形式,下面我们会看到),所有 JavaScript 中要讨论的新主意都会出现在ECMAScript Harmony 中。 ActionScriptActionScript 是一个基于 ECMAScript 4 早期草案的编程语言。Adobe 将其实现为 Flash 应用程序套件的一部分,也是它支持的唯一的脚本语言。这就让 Adobe 采用强硬的立场来支持 ECMAScript 4,甚至还将他们的引擎(Tamarin)开源发布了,以希望加快 ECMAScript 4 的采纳。Adobe 员工 Mike Chambers 爆光了一个在此事上的有趣看法:
ActionScript 开发者期望 ActionScript 中的创新会驱动 ECMAScript 中的特性。不幸的是这事从来没有出现过,而且后来出现在 ECMAScript 2015 中的特性与 ActionScript 在很多方面不兼容。 有人看到这是微软尝试保持控制 ECMAScript 语言和实现的一种策略。此时,唯一可行的 ECMAScript 4 引擎是 Tamarin,所以此时占有 80% 浏览器市场份额的微软可以继续使用它自己的引擎(以及扩展),而不用承担切换到竞争对手的替代品的代价或者花时间内部实现一切。 其他人只是说微软的异议仅仅是技术上的,跟来自 Yahoo 的人一样。Microsoft 的引擎 JScript 此时与其它实现有很多差异。有人已经看到这是保持秘密控制该语言的一种手段。 ActionScript 目前依然是 Flash 的开发语言,而 Flash 随着 HTML5 的到来,逐渐淡出了人们的视野。 如果 ECMAScript 4 已经被流行 JavaScript 引擎实现的话,ActionScript 依然与它最像:
E4X?什么是 E4X?E4X 是一个公认的 ECMAScript 扩展的名称。它在 ECMAScript 4 开发期间发布(2004年),所以就采用了绰号 E4X。其实际名称是 ECMAScript for XML,并被标准化为 ECMA-357。E4X 扩充了 ECMAScript,以支持对 XML 内容的原生处理和解析。在 E4X 中,XML 被当作是一种原生数据类型。它最初被主流 JavaScript 引擎(比如 SpiderMonkey)采纳,不过之后由于很少有人用而被拿掉。在 Firefox 版本 21 中被删除。 除了其名称中有数字 "4" 之外,E4X 与 ECMAScript 4 没多大关系。 如下是一个使用 E4X 的示例:
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|