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