ActionScript похож на JavaScript?
У меня есть книга Essential ActionScript 3 (O'Reilly), чтобы узнать, как использовать этот язык. В нем упоминается, что ActionScript 3 является реализацией ECMAScript, как и Javascript. Я нахожу это странным, потому что есть много различий. Насколько я знаю, в Javascript нельзя назначать переменным тип (var marvin: Robot) или создавать "традиционные" классы и интерфейсы. Это, однако, возможно в ActionScript.
Что происходит?
4 ответа
Текущая реализация 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) Edition 3.
ECMAScript - это просто стандарт для языка сценариев. Javascript и Actionscript являются реализациями этого стандарта. Каждая реализация может или не может строго следовать этому стандарту, и обе могут свободно добавлять и вычитать его.