| Test Available In FalconJx (+/-)? | ActionScript | JavaScript + Closure annotation | Notes |
---|---|---|---|---|
Global Constants |
|
|
|
|
Infinity | + | Infinity | Infinity |
|
-Infinity | + | -Infinity | -Infinity |
|
NaN | + | NaN | NaN |
|
undefined | + | undefined | undefined |
A table showing how each ActionScript language 'feature' is should be translated to Google Closure Tools assisted JavaScript by the FalconJS Compiler.
Using these AS3 references:
- Global Constants, Functions and Classes
- Statements, Keywords and Directives
Using Google Closure annotations:
- Annotating JavaScript for the Closure Compiler
Table quick navigation:
- coming soon ;-)
Legend for Javascript column color usage:
Black: JavaScript matches ActionScript
Red: solution not agreed upon
Blue: solution looks good, need consencus to approve (use Comments or Notes column)
Green: solution agreed upon
| Test Available In FlexJS (+/-)? | ActionScript | JavaScript + Closure annotation | Notes | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Global Constants |
| ||||||||||
|
|
| Infinity | - | Infinity | Infinity |
| ||||
-Infinity | - | -Infinity | -Infinity |
| |||||||
NaN | - | NaN | NaN |
| |||||||
Global Functions |
| undefined | - | undefined | undefined |
|
|
|
|
|
|
Global Functions |
|
|
|
| |||||||
Array() | - + | Array(...values) | Array(...values) | Frank's comment: https://cwiki.apache.org/confluence/display/FLEX/AS+to+JS+translation+table?focusedCommentId=30744800#comment-30744800 |
| ||||||
Boolean Boolean() | + - | Boolean(value) | Boolean(value) | See "Array" function note. | |||||||
decodeURI() | + - | decodeURI(value) | decodeURI(value) |
| |||||||
decodeURIComponent() | + - | decodeURIComponent(value) | decodeURIComponent(value) |
| |||||||
encodeURI() | + - | encodeURI(value) | encodeURI(value) |
| |||||||
encodeURIComponent() | + - | encodeURIComponent(value) | encodeURIComponent(value) |
| |||||||
escape() | + - | escape(value) | escape(value) |
| |||||||
int() | + - | int(value) | int(value >> 0) | ||||||||
isFinite() | + - | isFinite(value) | isFinite(value) |
| |||||||
isNaN() | + - | isNaN(value) | isNaN(value) |
| |||||||
isXMLName() | + - | isXMLName(value) | ? | There is no matching implementation in JavaScript. We may need to build a utility function to cover this one. |
| ||||||
Number() | + - | Number(value) | Number(value) | See "Array" function note. | |||||||
Object() | + - | Object(value) | Object(value) |
| |||||||
parseFloat() | + - | parseFloat(value) | parseFloat(value) |
| |||||||
parseInt() | + | <ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="449d2597-eb15-48f5-9810-0266173a5a3b"><ac:plain-text-body><![CDATA[ | parseInt() | - | parseInt(value, [radix]) | parseInt(value, [radix]) |
| ]]></ac:plain-text-body></ac:structured-macro> | |||
String() | + | String() | - | String(value) | String(value) | See "Array" function note. | |||||
trace() | + - | trace(...values) | console.log trace(...values) | We may need a utility function to wrap 'console.log', as not all browsers have debugging enable, and calling to a non-existent 'console' object will cause an error. Maybe something like Jangaroo's 'trace' implementation? | |||||||
uint() | + | uint() | | uint(value) | uint(value >>> 0) | ||||||
unescape() | + - | unescape(value) | unescape(value) |
| |||||||
Vector() | + - | result = Vector.<type>(valueArray); | result = /* @type {Array.<type>} / valueArray; | Let the Closure Compiler handle (check) what is basically a type cast from general Array to a Typed Array. | |||||||
XML() | + - | XML(value) | ? | Use 'goog.dom.xml'? | |||||||
XMLList() | + | XMLList(value) | ? | See "E4X" page... Use 'goog.dom.xml'? | |||||||
|
|
|
|
| |||||||
Classes |
|
|
|
| |||||||
ArgumentError | - + | ArgumentError | Error | ArgumentError | See "diff" page... Need utility class and cast a regular error object to that, for the sake of the Closure Compiler? | ||||||
arguments | + - | arguments | arguments |
| |||||||
Array | + - | Array | Array Not sure if all properties and methods of AS Array class map to the JS Array class | ||||||||
Boolean | + | Boolean | Boolean |
| |||||||
Class | + | - | - Code Block | | ActionScript | ActionScript | |||||
package com.example.components
{
public class MyClass
{
public function MyClass() {}
}
}
| |||||||||||
Code Block | Javascript | Javascript | |||||||||
goog.provide('com.example.components.MyClass');
/**
* @constructor
*/
com.example.components.MyClass = function() {};
|
| ||||||||||
Date | - | Date | Date | The JS class seems to be missing all the properties that the AS class offers. The methods on both classes match, AFAICT. | |||||||
DefinitionError | - | DefinitionError | Error | Need utility class and cast a regular Error object to that, for the sake of the Closure Compiler? | |||||||
Error | - | Error | Error | There is no 'errorID' property on the JS Error class | |||||||
EvalError | - | EvalError | EvalError | Need utility class and cast a regular Error object to that, for the sake of the Closure Compiler? | |||||||
Function | - | Function | Function |
| |||||||
int | - | int | Number |
| |||||||
JSON | - | JSON | JSON | How about support for "older" browsers? Do we provide "if not JSON, add custom JSON to window object"? | |||||||
Math | - | Math | Math |
| |||||||
Namespace | - | Namespace | ? | Do we need a utility class? | |||||||
Number | - | Number | Number |
| |||||||
Object | - | Object | Object | "setPropertyIsEnumerable" not available on JS Object.prototype... | |||||||
QName | - |
|
|
| |||||||
RangeError |
|
|
|
| |||||||
ReferenceError |
|
|
|
| |||||||
RegExp |
|
|
|
| |||||||
SecurityError |
|
|
|
| |||||||
String |
|
|
|
| |||||||
SyntaxError |
|
|
|
| |||||||
TypeError |
|
|
|
| |||||||
uint |
|
|
|
| |||||||
Date | + | Date | Date | ||||||||
DefinitionError | + | DefinitionError | DefinitionError | ||||||||
Error | + | Error | Error | ||||||||
EvalError | + | EvalError | EvalError | ||||||||
Function | + | Function | Function |
| |||||||
int | + | int | int | ||||||||
JSON | + | JSON | JSON | ||||||||
Math | + | Math | Math |
| |||||||
Namespace | + | Namespace | Namespace | ||||||||
Number | + | Number | Number |
| |||||||
Object | + | Object | Object | ||||||||
QName | + | QName |
| ||||||||
RangeError | + | RangeError | RangeError | ||||||||
ReferenceError | + | ReferenceError | ReferenceError | ||||||||
RegExp | + | RegExp | RegExp | ||||||||
SecurityError | + | SecurityError | SecurityError | ||||||||
String | + | String | String | ||||||||
SyntaxError | + | SyntaxError | SyntaxError | ||||||||
TypeError | + | TypeError | TypeError | ||||||||
uint | + | uint | uint | ||||||||
URIError | + | URIError | URIError | ||||||||
Vector | + | Vector |
| ||||||||
VerifyError | + | VerifyError | VerifyError | ||||||||
XML | + | XML |
| ||||||||
XMLList | + | XMLList | |||||||||
| URIError |
|
|
|
| ||||||
Vector Arithmetic |
|
|
|
| |||||||
VerifyError + | + | + | + | XML | |||||||
-- | + | -- | -- |
| |||||||
XMLList / | + | / | / |
|
|
| |||||
++ | + | ++ | ++ |
| |||||||
% | + Arithmetic | % | % |
| |||||||
* | + | * | * |
| |||||||
- | + | - | - |
| |||||||
|
|
|
| / | |||||||
Arithmetic compound assignment |
|
|
|
| |||||||
+= | + | += | += |
| |||||||
/= | % + | /= | /= |
| |||||||
%= | + | %= | %= |
| |||||||
*= | + | *= | *= |
| * |
|
|
|
| ||
-= | + | -= | -= |
| |||||||
|
|
|
|
| |||||||
Arithmetic compound assignment Assignment |
|
|
|
| |||||||
= | + | = | = |
| |||||||
|
| /= |
|
|
| ||||||
Bitwise | %= |
|
|
|
| ||||||
*= & | + | & | & |
| -= |
| |||||
<< | + | << | << |
| |||||||
~ | + | ~ | ~ |
| |||||||
| | + Assignment | | | | |
| |||||||
>> | + = | >> | >> |
| |||||||
>>> | + | >>> | >>> |
| |||||||
^ | + Bitwise | ^ | ^ |
| |||||||
& |
|
|
| << | |||||||
Bitwise compound assignment |
|
|
| ~ | |||||||
&= |
| + | &= | &= |
| ||||||
<<= | + | <<= | <<= |
| |||||||
|= | + | |= | |= |
| |||||||
>>= | + | >>= | >>= |
| |||||||
>>>= | + | >>>= | >>>= |
| |||||||
^= | + | ^= | ^= |
| |||||||
|
|
|
|
| |||||||
Bitwise compound assignment Comment |
|
|
|
| &= |
| |||||
/**/ | + | /**/ | /**/ |
| |||||||
// | <<= + | // | // |
| |||||||
|= |
|
|
|
| |||||||
>>= Comparison |
|
|
|
| |||||||
>>> == | + | == | == |
| |||||||
^= > | + | > | > |
| |||||||
>= | + | >= | >= | Comment | |||||||
!= | + | != | != |
| /../ | ||||||
< | + | < | < |
|
|
| / | ||||
/ <= | + | <= | <= |
| |||||||
=== | + |
| === | === |
| Comparison |
| ||||
!== | + | !== | !== |
| |||||||
== |
|
|
|
| |||||||
> Logical |
|
|
| > | |||||||
= && | + | && | && |
| |||||||
! &&= |
|
| + | x &&= y |
| ||||||
! < | + | ! | ! | < | |||||||
= || | + | || | || |
| |||||||
= ||= = |
|
|
|
| + | x ||= y | !== | ||||
|
|
|
|
| |||||||
Other |
|
| Logical |
| |||||||
[] | + |
| [] | [] && |
| ||||||
as | + |
| as |
| |||||||
, | + | , | ! , |
| |||||||
?: |
|
| + | (value) ? true : false; | (value) ? true : false; || |
| |||||
delete | + | delete | ||= delete |
| |||||||
. | + | . | . |
| |||||||
in | + | in | Other in |
| |||||||
instanceof | + | instanceof |
| ||||||||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="20f5648d-3e1a-4fe2-8b87-a72a88d3b3f9"><ac:plain-text-body><![CDATA[ | [] |
|
|
|
| ]]></ac:plain-text-body></ac:structured-macro> | |||||
as |
|
|
|
| |||||||
, |
|
|
|
| |||||||
?: |
|
|
|
| |||||||
delete |
|
|
|
| |||||||
. |
|
|
|
| |||||||
in |
|
|
|
| |||||||
instanceof | |||||||||||
is | + | is | ? | ||||||||
:: | + | :: | ? |
| |||||||
new | + | new | new |
| |||||||
{} | + | {} | {} |
| |||||||
() | + | () | () |
| |||||||
/ | + | / | / |
| |||||||
: | + | : |
| ||||||||
typeof | + | typeof | typeof | ||||||||
void | + | void | void instanceof |
| |||||||
|
|
| is |
|
| ||||||
String |
| :: |
|
|
| ||||||
+ | new + | + | + |
| |||||||
+= | {} + | += | += |
| |||||||
" | () + | " | " |
| |||||||
| / |
|
|
|
| ||||||
: XML |
|
|
|
| |||||||
typeof @ | - |
|
|
| |||||||
void |
|
|
|
| |||||||
|
|
|
|
| |||||||
String |
|
|
|
| |||||||
+ |
|
|
|
| |||||||
+= |
|
|
|
| |||||||
" |
|
|
|
| |||||||
|
|
|
|
| |||||||
@ | |||||||||||
{} | - | {} |
| ||||||||
[] | - | [] |
| ||||||||
+ | - | + | |||||||||
+= | - | += | |||||||||
delete | - | delete | |||||||||
.. | - | .. | |||||||||
. | - | . | |||||||||
() | - | () | |||||||||
<> | - | <> |
| ||||||||
XML |
|
|
|
| |||||||
@ Statements |
|
|
|
| {} | ||||||
break | + | break | break |
| |||||||
case |
| ||||||||||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="94ed708c-c9e4-47dd-a4f5-c58b2061c046"><ac:plain-text-body><![CDATA[ | [] |
|
|
|
| ]]></ac:plain-text-body></ac:structured-macro> | |||||
+ |
|
|
|
| |||||||
+= |
|
|
|
| |||||||
delete |
|
|
|
| |||||||
.. |
|
|
|
| |||||||
. |
|
|
|
| |||||||
() |
|
|
|
| |||||||
<> |
|
|
|
| |||||||
|
|
|
|
| |||||||
Statements |
|
|
|
| |||||||
break |
|
|
|
| |||||||
case |
|
|
|
| |||||||
continue |
|
|
|
| |||||||
default |
|
|
|
| |||||||
do...while |
|
|
|
| |||||||
else |
|
|
|
| |||||||
+ | case | case |
| ||||||||
continue | + | continue | continue |
| |||||||
default | + | default | default |
| |||||||
do...while | + | do...while | do...while |
| |||||||
else | + | else | else |
| |||||||
for | + | for | for |
| |||||||
for...in | + | for...in | for...in |
| |||||||
for each...in | + | for each...in |
| ||||||||
if | + | if | if |
| |||||||
label | + | label | label |
| |||||||
return | + | return | return |
| |||||||
super | + | super([arg1, ..., argN]); |
| ||||||||
switch | + | switch | switch |
| |||||||
throw | + | throw | throw |
| |||||||
try...catch...finally | + | try...catch...finally | try...catch...finally |
| |||||||
while | + | while | while |
| |||||||
with | + | with | with for |
| |||||||
|
|
| for...in |
|
| ||||||
Attribute Keywords | for each...in |
|
|
| |||||||
dynamic | if + |
| dynamic |
| |||||||
final | label + |
| final |
| |||||||
internal | return + |
| internal |
| |||||||
native | super |
| [not user accessible] |
|
| ||||||
switch override | + |
| override |
| |||||||
throw private | + |
|
|
| private | See "diff" page... try...catch...finally |
| ||||
protected | + |
| protected | See "diff" page... while |
| ||||||
public | + | public | |||||||||
static | + | static |
|
| with |
|
| |
| ||
|
|
|
| Attribute Keywords | |||||||
Definition keywords |
|
|
|
| |||||||
dynamic |
|
|
|
| |||||||
final |
|
|
|
| |||||||
internal |
|
|
|
| |||||||
native |
|
|
|
| |||||||
override |
|
|
|
| |||||||
private |
|
|
|
| |||||||
protected |
|
|
|
| |||||||
public |
|
|
|
| |||||||
static |
|
|
|
| |||||||
|
|
|
|
| |||||||
Definition keywords |
|
|
|
| |||||||
... (rest) parameter |
|
|
|
| |||||||
... (rest) parameter | + | ...rest | |||||||||
class | + | class |
| ||||||||
const | + | const |
| ||||||||
extends | + | extends |
| ||||||||
function | + | function | function |
| |||||||
get | + | get |
| ||||||||
implements | + | implements |
| ||||||||
interface | + | interface |
| ||||||||
namespace | + | namespace |
| ||||||||
package | + | package |
| ||||||||
set | + | set |
| ||||||||
var | + | var | var class |
| |||||||
|
|
| const |
| |||||||
Directives |
| extends |
|
| |||||||
default xml namespace | - | function | default xml namespace |
| |||||||
import | + | get | import |
| |||||||
include | - | implements | include |
| |||||||
use namespace |
| ||||||||||
interface |
|
|
|
| |||||||
- | use namespace | namespace |
| |
| ||||||
package |
|
|
|
| |||||||
set Namespaces |
|
|
|
| |||||||
var AS3 | - | ? |
|
| |||||||
|
|
|
|
| |||||||
Directives |
|
|
|
| |||||||
default xml namespace |
|
|
|
| |||||||
import |
|
|
|
| |||||||
include |
|
|
|
| |||||||
use namespace |
|
|
|
| |||||||
|
|
|
|
| |||||||
Namespaces |
|
|
|
| |||||||
AS3 |
|
|
|
| |||||||
flash_proxy |
|
|
|
| |||||||
object_proxy |
|
|
|
| |||||||
|
|
|
|
| |||||||
Primary expression keywords |
|
|
|
| |||||||
false |
|
|
|
| |||||||
null |
|
|
|
| |||||||
this |
|
|
|
| |||||||
true |
|
|
|
| |||||||
|
|
|
|
| |||||||
OLD |
|
|
|
| Inheriting |
| |||||
Code Block | ActionScript | ActionScript | |||||||||
package com.example.components{
import org.apache.flex.Button;
public class MyClass extends Button
{
public function MyClass()
{
super();
}
}
}
| |||||||||||
Code Block | Javascript | Javascript | |||||||||
goog.provide('com.example.components.MyClass');
goog.require('org.apache.flex.Button');
/**
* @constructor
* @extends {org.apache.flex.Button}
*/
com.example.components.MyClass = function() {
goog.base(this);
};
goog.inherits(com.example.components.MyClass, org.apache.flex.Button);
|
| ||||||||||
? | |||||||||||
flash_proxy | - | ? | ? | ||||||||
object_proxy | - | ? | ? | ||||||||
|
|
|
|
| |||||||
Primary expression keywords |
|
|
|
| |||||||
false | + | false | false |
| |||||||
null | + | null | null |
| |||||||
this | + | this |
| ||||||||
true | + | true | true |
| |||||||
| |||||||||||
Implementing |
| TBD | TBD |
| |||||||
Inheriting + Implementing |
| TBD | TBD |
| |||||||
|
|
|
|
| |||||||
Fields |
|
|
|
| private |
|
Code Block |
---|
private var _myVar:String = "";
|
Code Block |
---|
/**
* @private
* @type {string}
*/
this._myVar = '';
|
protected
This is how far I got today ;-)
public
Global Constants