Каковы основные различия между JavaScript и ActionScript 3?

Я знаю, что оба языка из одного стандарта ECMA-262. Похоже, что они становятся очень похожими с JavaScript, добавляя прослушиватели событий для экземпляров основных объектов с помощью таких методов, как freeze и seal в EMCAScript-262 5th edition и тому подобное. Мне было интересно, в чем разница?

7 ответов


прежде всего ActionScript 3 и JavaScript определены в ECMA-262 таким образом, у них много общего. Например, оба языка имеют наследование прототипов. Однако неверно, что ActionScript полностью реализует ES4.

ActionScript реализует несколько функций, которые не определены в ECMA-262 и некоторых-но определенно не всех-ES4.

Итак, что AS3 добавляет к ECMA-262? Те же различия JavaScript:

  • динамически и статически типизированный код
  • пакеты, классы и интерфейсы
  • Стандартная модель наследования OO (не основанная на прототипе, статически типизированная)
  • тип данных uint и int
  • E4X (ECMA-357)
  • тип-безопасный условной компиляции (ES4)
  • вектор. Тип данных (ES4)

возможно, я забыл некоторые функции. Я не уверен, что XML, XMLList и т. д. являются уже определена в 262 или пришел с 357.

ключевым отличием, однако, является стандартная библиотека. JavaScript поставляется с несколькими предопределенными классами, такими как DOMElement и браузерные зависимые дополнения. ActionScript имеет довольно большую стандартную библиотеку с такими функциями, как потоковое видео, и совместим со всеми платформами.


я программировал как в ActionScript, так и в Javascript, и с менее технической точки зрения я вижу два основных различия.

1) JavaScript является более мощным. Вам разрешено делать гораздо больше с языком, потому что у него нет "компилятора" или типов. Есть некоторые большие рамки, там вроде ExtJS и jQuery что попытаться упростить вещи для вас, но даже с ними, вы действительно можете сделать удивительное количество ущерба, если ты хочешь.

2) ActionScript намного более ограничен и, следовательно, намного проще в обслуживании. Adobe проделала большую работу, чтобы удержать вас от сложных частей ECMAScript. Объекты ECMAScript, прототипное наследование и замыкания-это три понятия, которые вам действительно не нужно понимать для программирования в ActionScript. Вам просто нужно понять, как использовать объект Adobe "Class".

для простого использования я предпочитаю JavaScript. Однако, как только проект становится большим, зависит от того, для кого вы кодируете. Если бы у меня была команда из 5 разработчиков, программирующих на отрывочном запуске, я бы выбрал JavaScript в мгновение ока. Однако в обхвате крупной корпорации или академических кругов вы можете быть более безопасны, полагаясь на платформу Adobe.

надеюсь, это поможет.


один тип Safetly. Actionscript требует, чтобы вы установили тип для всех объектов, а JavaScript-нет (если на то пошло, в JavaScript одна переменная может быть одним типом, а затем сразу же установить другой тип).

Actionscript является объектно-ориентированным. Хотя вы можете иметь это в JavaScript, Actionscript допускает наследование объектов и т. д.


по сути, основное различие, которое я нахожу, заключается в том, что ActionScript является более подробным статически типизированным языком на основе классов, где javascript является прототипным языком.

к сожалению, в ActionScript нет вывода типа, поэтому использование Flex Builder дает предупреждение каждый раз, когда вы оставляете что-то нетипизированное, что я нахожу ненужным и чрезмерно подробным, это не только делает его более подробным, чем javascript, но я нахожу эквивалентный код более подробным, чем С.#

однако дополнительная многословность имеет улучшения perf и дополнительную безопасность типов во время компиляции. К сожалению, это также значительно увеличивает время сборки, в приложениях Java Script любого размера я привык к мгновенной обратной связи, тогда как мой последний проект ActionScript имел время сборки, превышающее 2 минуты.


ключевые различия заключаются в том, что ActionScript 3 поддерживает как наследование на основе классов, так и прототипное наследование, применяет привязки пространства имен между именами классов и именами файлов и не поддерживает некоторые глобальные методы JavaScript, такие как eval. К счастью, вы можете сделать несколько вещей, чтобы преодолеть разрыв.

вы можете глобально установить пространство имен, используя ES для ECMAScript или AS3 для ActionScript 3:

use namespace ES;
use namespace AS3; 

если вы используете пространство имен AS3, любой метод переопределить должны использовать пространство имен AS3 и переопределение атрибутов.

если вы не используете пространство имен AS3, вы можете использовать методы прототипа и propertyIsEnumerable.

вы можете выборочно использовать версию пространства имен AS3 свойства или метода в динамической функции:

var nums:Array = new Array(1, 2, 3); 
nums.AS3::pop(); 
trace(nums); // output: 1,2

чтобы отключить наследование на основе классов, можно также использовать следующие параметры компилятора: compc -as3=false -strict=false -es=true

import *
class foo
  {
  dynamic function foo() 
    {

    }
  }

если вы не используете пространство имен AS3, экземпляр базового класса наследуется свойства и методы, определенные для объекта-прототипа.

если вы решили использовать пространство имен AS3, экземпляр класса core наследует свойства и методы, определенные в определении класса.

вот общие черты между ECMAScript-4 и ECMAScript-2017 или более поздней версии:

Feature 		 ES4/ES6+ 	ES4 Only                    
Rest parameter 		 ☑ 
Destructuring 		 ☑
ByteArrays 		 ☑
Class 		 	 ☑  
Interface 		 		 ☑
Static fields 		 		 ☑
Parameter default 	 ☑
Rest Parameters 	 ☑
Bound methods 		 		 ☑
dynamic this value 			 ☑
multiple catch clauses 			 ☑
short-circuit-and (&&=) 		 ☑
short-circuit-or (||=) 			 ☑
Type Annotations 			 ☑

ссылки


с точки зрения разработчика, что самое главное:

1) JavaScript-это не ООП, это не супер-сайта, что означает, что если вы переопределяете( любым способом ) что-то, вы не можете назвать это супер, и это дело выключатель для сложных программ, для которых ООП является ключевым, и Actionscript3-это все о, вы можете иметь миллионы линия Actionscript3 код работать вместе, и в хорошем состоянии.

2) Actionscript3 работает в Flash Player, который имеет только один реализация от Adobe, это означает, что он согласован все время, все браузеры (до тех пор, как установлен Flash Player), но Javascript работает в браузерах напрямую, но каждый браузер имеет свою собственную реализацию, что означает, что ваш код Javascript должен быть протестирован против всех целевых браузеров для обеспечения работы.


честно говоря, это не то же самое, потому что сценарий действий загружен EMQJ24, новым языком для веб-сайта высокой разработки. хотя JS все еще с ним EMCA22, разница между ними-это стиль и формат кода. а также сценарий действий достаточно стар,поэтому большинство программистов теперь используют csx01 обновленный язык из cSS, он может распознавать все типы языка без какой-либо строки.