¿Cuáles son las principales diferencias entre JavaScript y ActionScript 3?


Sé que ambos idiomas son del mismo estándar ECMA-262. Parece que los dos se están volviendo muy similares con JavaScript agregando oyentes de eventos para instancias de objetos principales a través de métodos como freeze y seal en EMCAScript-262 5th edition y tal. Me preguntaba cuáles son las diferencias?

Author: Paul Sweatte, 2010-02-15

7 answers

En primer lugar, ActionScript 3 y JavaScript están definidos en ECMA-262 por lo que tienen mucho en común. Ambos idiomas cuentan con herencia de prototipos, por ejemplo. Sin embargo, no es correcto que ActionScript implemente completamente ES4.

ActionScript implementa un par de características que no están definidas en ECMA-262 y algunas features pero definitivamente no todas.de ES4.

Entonces, ¿qué agrega AS3 a ECMA-262? Esas son también las diferencias a JavaScript:

  • Código tipeado dinámica y estáticamente
  • Paquetes, Clases e Interfaces
  • Modelo de herencia OO estándar (no basado en prototipos, tipado estáticamente)
  • tipo de datos uint e int
  • E4X (ECMA-357)
  • Compilación condicional segura de tipo (ES4)
  • Vector. tipo de datos (ES4)

Tal vez he olvidado algunas características. No estoy seguro si XML, XMLList etc. ya están definidos en 262 o vinieron con 357.

El sin embargo, la diferencia clave es la biblioteca estándar. JavaScript viene con un par de clases predefinidas como DOMElement y adiciones dependientes del navegador. ActionScript tiene una biblioteca estándar bastante grande con características como la transmisión de video y es consistente en todas las plataformas.

 32
Author: Joa Ebert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 20:50:15

He estado programando tanto en ActionScript como en Javascript, y desde un punto de vista menos técnico, veo dos diferencias principales.

1) JavaScript es más potente. Se le permite hacer mucho más con el lenguaje porque no tiene un "compilador" o tipos. Hay algunos grandes frameworks como ExtJS y jQuery que tratan de simplificar las cosas para usted, pero incluso con ellos, realmente se le permite hacer una cantidad increíble de daño si lo desea a.

2) ActionScript es mucho más limitante y, por lo tanto, mucho más fácil de mantener. Adobe hizo mucho trabajo para mantenerlo fuera de las partes difíciles de ECMAScript. Los objetos ECMAScript, la herencia prototípica y los cierres son tres conceptos que realmente no necesita entender para programar en ActionScript. Solo necesita entender cómo usar el objeto "Class" de Adobe.

Para usos simples, prefiero JavaScript. Sin embargo, una vez que el proyecto se hace grande, depende de quién esté codificando para. Si tuviera un equipo de 5 desarrolladores de programación en una start-up scrappy, elegiría JavaScript en un santiamén. Sin embargo, en la circunferencia de una gran corporación o academia, podría estar más seguro confiando en la plataforma de Adobe.

Espero que eso ayude.

 12
Author: Stephano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 19:44:52

Uno es type Safetly. Actionscript requiere que establezca un tipo para todos los objetos, y JavaScript no (para el caso, en JavaScript, una variable puede ser un tipo y luego establecer inmediatamente otro tipo).

Actionscript está orientado a objetos. Aunque puede tener esto en JavaScript, Actionscript permite la herencia de objetos, etc.

 5
Author: Gabriel McAdams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 19:45:07

Esencialmente, la principal diferencia que encuentro es que ActionScript es más un lenguaje detallado basado en clases de tipo estático, donde as javascript es un lenguaje prototípico.

Desafortunadamente no hay inferencia de tipo en ActionScript, por lo que usar Flex Builder da una advertencia cada vez que deja algo sin escribir que encuentro innecesario y excesivamente detallado, no solo lo hace más detallado que javascript, sino que encuentro que el código equivalente es más detallado que C#.

Sin embargo, el extra verbosity tiene mejoras de rendimiento y seguridad de tipo extra en tiempo de compilación. Desafortunadamente, esto también se suma al tiempo de compilación bastante significativamente, en aplicaciones de Java Script de cualquier tamaño estoy acostumbrado a la retroalimentación instantánea, mientras que mi último proyecto de ActionScript tenía un tiempo de compilación superior a 2 minutos.

 4
Author: mythz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 19:52:51

Las principales diferencias son que ActionScript 3 admite tanto la herencia basada en clases como la herencia prototípica, impone enlaces de espacio de nombres entre nombres de clases y nombres de archivos, y no admite algunos métodos JavaScript globales como eval. Afortunadamente, puede hacer varias cosas para cerrar la brecha.

Puede establecer globalmente el espacio de nombres usando ES para ECMAScript o AS3 para ActionScript 3:

use namespace ES;
use namespace AS3; 

Si está utilizando el espacio de nombres AS3, cualquier override de método debe usar el AS3 espacio de nombres y el atributo override.

Si no está utilizando el espacio de nombres AS3, puede utilizar los métodos prototype y propertyIsEnumerable.

Puede usar selectivamente la versión de espacio de nombres AS3 de una propiedad o método en una función dinámica:

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

Para desactivar la herencia basada en clases, también puede usar las siguientes opciones de compilador: compc -as3=false -strict=false -es=true

import *
class foo
  {
  dynamic function foo() 
    {

    }
  }

Si no utiliza el espacio de nombres AS3, una instancia de una clase core hereda las propiedades y métodos definidos en el prototipo objeto.

Si decide usar el espacio de nombres AS3, una instancia de una clase core hereda el propiedades y métodos definidos en la definición de la clase.

Aquí hay unas características comunes entre ECMAScript - 4 y ECMAScript-2017 o posterior:

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 			 ☑

Referencias

 3
Author: Paul Sweatte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-04 13:19:42

Desde el punto de vista del desarrollador, lo que más importa:

1) Javascript no es realmente OOP, no tiene ninguna palabra clave super, lo que significa que si anula( por cualquier medio ) algo, no puede llamarlo a través de super, y este es el factor decisivo para los programas complejos para los que OOP es la clave, y Actionscript3 es todo OOP, puede tener millones de líneas de código Actionscript3 trabajando juntas y bien mantenidas.

2) Actionscript3 se ejecuta en Flash Player que solo tiene una implementación desde Adobe, esto significa que es consistente todo el tiempo, todos los navegadores( siempre y cuando instalado Flash Player), pero Javascript se ejecuta en los navegadores directamente, pero cada navegador tiene su propia implementación, lo que significa que su código Javascript tiene que ser probado contra todos los navegadores dirigidos para garantizar el trabajo.

 1
Author: user2336415,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-19 14:16:59

Francamente no es lo mismo, porque action script está cargado con EMQJ24, el nuevo lenguaje para el sitio web de alto desarrollo. mientras que JS sigue con él EMCA22, la diferencia entre ellos son el estilo y el formato del código. y también script de acción son las edades suficientes, es por eso que la mayoría de programador nowdays usando CSX01 lenguaje actualizado de cSS,se puede reconocer todo tipo de lenguaje sin ninguna línea.

 -3
Author: kean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-29 13:35:55