Основные отличия заключаются в том, что 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 <b>this</b> value 			 ☑
multiple <b>catch</b> clauses 			 ☑
short-circuit-and (&&=) 		 ☑
short-circuit-or (||=) 			 ☑
Type Annotations 			 ☑
Ссылки