Подтвердить что ты не робот

Каковы ключевые отличия между JavaScript и ActionScript 3?

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Ключевыми отличиями являются то, что 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, экземпляр базового класса наследует свойства и методы, определенные в определении класса.

Вот общие особенности между 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 			 ☑

Ссылки

Ответ 6

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

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

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

Ответ 7

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