我有一本书,Essential ActionScript 3 (O'Reilly),来学习使用这种语言。它提到 ActionScript 3 是 ECMAScript 的实现,就像 Javascript 一样。我觉得这很奇怪,因为有很多不同之处。据我所知,在 Javascript 中,您不能为变量指定类型(var marvin : Robot)或创建“传统”类和接口。但是,这在 ActionScript 中是可能的。
这是怎么回事?
我有一本书,Essential ActionScript 3 (O'Reilly),来学习使用这种语言。它提到 ActionScript 3 是 ECMAScript 的实现,就像 Javascript 一样。我觉得这很奇怪,因为有很多不同之处。据我所知,在 Javascript 中,您不能为变量指定类型(var marvin : Robot)或创建“传统”类和接口。但是,这在 ActionScript 中是可能的。
这是怎么回事?
当前浏览器中 Javascript 的实现遵循 Ecmascript 3 规范。Actionscript 实现了 Ecmascript 3,但除此之外,还实现了 Ecmascript 4 规范草案中的一些元素(当时)。ES4 具有类、经典继承、包和您在 AS3 中看到的其他特性。
ES4 现在已被放弃,但这里是规范PDF的链接。
ActionScript 1(Flash Player 5 和 6)非常接近 JavaScript。
维基百科关于ECMAScript状态的页面(引用):
ECMAScript 是一种脚本语言,由 Ecma International 在 ECMA-262 规范和 ISO/IEC 16262 中标准化。该语言在网络上被广泛使用,尤其是以其三种最著名的方言 JavaScript、ActionScript和JScript的形式。
所以我猜测这三种语言是 ECMAScript 的“子代”,并且它们中的每一个都选择实现(或不实现)某些特定功能——同时都保持相同的根。
关于ActionScript的页面证实了这一点,说明(引用,强调我的):
ActionScript 是一种 基于ECMAScript 的脚本语言。
我想这个“基于”是重要的部分。
此外,我会说,根据使用的 ECMAScript 版本可能会有所不同——尤其是考虑到人们在谈论ECMAScript 5,例如,Javascript 是基于 ECMAScript 3 的:
截至 2009 年,该语言的最新版本是 JavaScript 1.8.1。它是 ECMAScript (ECMA-262) 第 3 版的超集。
ECMAScript 只是一种脚本语言的标准。Javascript 和 Actionscript 都是该标准的实现。每个实现可能会或可能不会严格遵循该标准,并且两者都可以自由地添加和减去它。