ECMAScript
维基百科,自由的百科全书
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
目录 |
[编辑] 历史
1995年12月升阳公司与网景通讯公司一起引入了JavaScript。1996年3月,网景通讯公司发表了支持JavaScript的网景导航者2.0。由于JavaScript作为网页的客户端脚本语言非常成功,微软于1996年8月引入了Internet Explorer3.0,这个软件支持一个“约”与JavaScript相容的JScript。
1996年11月网景通讯公司将JavaScript提交给欧洲计算机制造商协会进行标准化。ECMA-262的第一个版本于1997年6月被Ecma组织采纳。
ECMAScript是由ECMA-262标准化的脚本语言的名称。JavaScript和JScript与ECMAScript相容,但包含超出ECMAScript的功能。
[编辑] 版本
至今为止有四个ECMA-262版本发表,代號「Harmony」版本正在工作中。
| 版本 | 发表日期 | 与前版本的差异 |
|---|---|---|
| 1 | 1997年6月 | 首版 |
| 2 | 1998年6月 | 格式修正,以使得其形式与ISO/IEC16262国际标准一致 |
| 3 | 1999年12月 | 强大的正则表达式,更好的文字链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变 |
| 4 | 放棄 | 由於關於語言的複雜性出現分歧,第4版本被放棄,其中的部分成為了第5版本及Harmony的基礎。 |
| 5 | 2009年12月[1] | 新增「嚴格模式(strict mode)」,一個子集用作提供更徹底的錯誤檢查,以避免結構出錯。澄清了許多第3版本的模糊規範,and accommodates behaviour of real-world implementations that differed consistently from that specification。增加了部分新功能,如getters及setters,支持JSON及更完整的反射在關於對象屬性中。[2][3][4][5] |
| Harmony | 正在工作中 | 多個新的概念和語言特性 — 參考JavaScript#Features。ECMAScript Harmony將會以「ECMAScript 6」發佈。 |
2004年6月Ecma组织发表了ECMA-357标准,它是ECMAScript的一个扩延,也被称为E4X(ECMAScript for XML)。
[编辑] 方言
许多程序,尤其是网页浏览器支持ECMAScript。浏览器中的ECMAScript实现添加了与文档对象模型的接口,可以通过脚本改变网页的内容、结构和样式。
| 程序 | 方言 | 相应ECMAScript版本 |
|---|---|---|
| Mozilla Firefox ,Gecko 排版引擎,SpiderMonkey及Rhino[d 1] | JavaScript 1.8.1[d 2] | ECMA-262, 第五版 |
| Google Chrome, V8 排版引擎 | JavaScript[d 2] | ECMA-262, 第五版[d 3] |
| Internet Explorer, Trident 排版引擎 | JScript 9.0 | ECMA-262, 第五版[d 4] |
| Opera | ECMAScript[d 5] | ECMA-262, 第三版 |
| KHTML 排版引擎, KDE Konqueror及蘋果公司 Safari[d 6] | JavaScript[d 2] | ECMA-262, 第三版 |
| Appweb Web Server, Samba 4 | Ejscript 0.9.9 | ECMA-262, 第三版[d 7] |
| Microsoft .NET Framework | JScript .NET 8.0 | ECMA-262, 第三版[d 8] |
| Adobe Flash及Adobe Flex | ActionScript 3 | ECMA-262, 第三版[d 9] |
| Adobe Acrobat | JavaScript 1.7[d 10] | ECMA-262, 第三版 |
| 通用腳本語言 | DMDScript 1.15 | ECMA-262 |
| OpenLaszlo平台 | JavaScript[d 11] | ECMA-262, 第三版[d 12] |
| CriScript, 遊戲平台的JScript | CriScript 0.91.0 | ECMA-262, 第三版 |
| iCab | InScript 3.22 (放棄) | ECMA-262, 第三版 |
| Max/MSP | JavaScript 1.5[d 2] | ECMA-262, 第三版 |
| ANT Galio 3 | JavaScript 1.5[d 2][d 13] | ECMA-262, 第三版 |
| KDE | QtScript | ECMA-262, 第三版 |
| Caja | ECMA-262, 第三版[d 14] | |
| Objective-J | ECMA-262, 第三版 | |
| WMLScript | ECMA-262, 第三版 |
- ^ Mozilla能透過SpiderMonkey中的C語言及Rhino 中Java),在部分第三方軟件,包括Yahoo! Widgets (Konfabulator)及Macintosh系統級的腳本語言實現JavaScript OSA.
- ^ 2.0 2.1 2.2 2.3 2.4 Mozilla官方版本的JavaScript.。Most non-Mozilla implementations claiming JavaScript "compliance" do not actually support most JavaScript extensions; rather, they target ECMA-262, 第三版.
- ^ V8實現ECMAScript在ECMA-262,第三版: V8 JavaScript Engine.
- ^ Internet Explorer 9 已通过JScript 9.0实现对ECMA-262,第五版的支持, 详见JScript条目.
- ^ Opera執行了部分JavaScript及JScript擴展: ECMAScript support in Opera Presto 2.3
- ^ Safari使用基於KDE KJS的JavaScriptCore函式庫。
- ^ This implementation asserts to support some extensions proposed in drafts of ECMAScript edition 4 (and now ECMAScript Harmony): Ejscript Overview.
- ^ 微軟聱稱,JScript 8.0支持"幾乎所有ECMAScript第三版的特徵",但沒有列出不支持的功能。
- ^ 除了支ECMA-262版本三以外,ActionScript 3同時支持ECMAScript版本四的擴展提議草案: The Kiwi Project: AS3 language 101 for C/C++ coders.
- ^ Adobe Acrobat 9.0使用SpiderMonkey 1.7 排版引擎: JavaScript for Acrobat API Reference
- ^ OpenLaszlo both uses an ECMAScript dialect as noted in the Developer's Guide: Appendix B: ECMAScript and can compile down to JavaScript targeted for the browser (the DHTML target).
- ^ As of version 4, OpenLaszlo implements standard ECMAScript edition 3 with some extensions proposed in drafts of ECMAScript edition 4: OpenLaszlo 4.
- ^ ANT Galio Browser要求支持JavaScript 1.5
- ^ Caja模擬嚴格模式在ECMAScript版本五。
[编辑] 對應版本
| JavaScript | JScript | ECMAScript |
|---|---|---|
| 1.0 (Netscape 2.0, 1996年8月) | 1.0 (IE 3.0 - 早期版本, 1996年8月) | |
| 1.1 (Netscape 3.0, 1996年8月) | 2.0 (IE 3.0 - 後期版本, 1997年1月) | |
| 1.2 (Netscape 4.0-4.05, 1997年6月) | ||
| 1.3 (Netscape 4.06-4.7x, 1998年10月) | 3.0 (IE 4.0, 1997年10月) | 第一版 (1997年6月) / 第二版 (1998年6月) |
| 1.4 (只有Netscape Server) | 4.0 (Visual Studio 6, 沒有IE發佈) | |
| 5.0 (IE 5.0, 1999伴月) | ||
| 5.1 (IE 5.01) | ||
| 1.5 (Netscape 6.0, 2000年11月;後期 Netscape及Mozilla發佈) | 5.5 (IE 5.5, 2000年7月) | 第三版 (1999年12月) |
| 5.6 (IE 6.0, 2001年10月) | ||
| 1.6 (Gecko 1.8, Firefox 1.5, 2005年11月) | 第三版,新增一些標準的改進: E4X,額外Array (如Array.prototype.forEach), Array及String generics (JavaScript 1.6的新功能) |
|
| 1.7 (Gecko 1.8.1, Firefox 2, 2006年10月) | 第三版新增Python generators及array comprehensions ([a*a for (a in iter)]), block scope with let, destructuring assignment (var [a,b]=[1,2])(JavaScript 1.7的新功能) |
|
| 1.8 (Gecko 1.9, Firefox 3, 2008年6月) | Edition 3 plus all JavaScript 1.7 enhancements, plus expression closures (function(x) x * x), generator expressions(JavaScript 1.8的新功能)expression closures (function(x) x * x), generator expressions(JavaScript 1.8的新功能) |
|
| JScript .NET (ASP.NET; 沒有IE發佈) | (JScript .NET is said to have been designed with the participation of other Ecma members[6]) | |
| JavaScript 2.0 (工作中) | Harmony (工作中) |
[编辑] 參考文獻
- ^ ECMA-262 5th Edition: ECMAScript Language Specification
- ^ Changes to JavaScript, Part 1: EcmaScript 5
- ^ http://www.ecma-international.org/news/PressReleases/PR_Ecma_finalises_major_revision_of_ECMAScript.htm
- ^ InfoQ: ECMAScript 5正式发布
- ^ Javascript面面觀:核心篇《ECMA-262 Edition 5》
- ^ Introducing JScript .NET. Microsoft.com [2010-01-12].
[编辑] 參見
[编辑] 外部鏈結
- (英文)About ECMAScript
- (英文)Annotated ECMAScript 5.1
- ECMAScript 4 的參考實現
- Standard ECMA-262 ECMAScript Language Specification 3rd edition (December 1999)
- Standard ECMA-290 ECMAScript Components Specification (June 1999)
- Standard ECMA-327 ECMAScript 3rd Edition Compact Profile (June 2001)
- Standard ECMA-357 ECMAScript for XML (E4X) Specification (June 2004)
- Export Root of the ECMAScript 4 Committee Wiki
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||