...
| Test Available In FlexJS (+/-)? | ActionScript | JavaScript + Closure annotation | Notes | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Global Constants |
|
|
|
| ||||||||||||||
Infinity | - | Infinity | Infinity |
| ||||||||||||||
-Infinity | - | -Infinity | -Infinity |
| ||||||||||||||
NaN | - | NaN | NaN |
| ||||||||||||||
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(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) | (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) | In ActionScript, calling 'Object(value)' returns 'value' (since all values are objects). Given that, does it make sense to just write 'value' in JavaScript and let the Closure Compiler "cast" it? | ||||||||||||||
parseFloat() | - | parseFloat(value) | parseFloat(value) |
| ||||||||||||||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e7bb82a6a57dded9-e0027129-4992400c-9c27a2ef-065816ed66d7d65c72b138ea"><ac:plain-text-body><![CDATA[ | parseInt() | - | parseInt(value, [radix]) | parseInt(value, [radix]) |
| ]]></ac:plain-text-body></ac:structured-macro> | ||||||||||||
String() | - | String(value) | String(value) | See "Array" function note. | ||||||||||||||
trace() | - | trace(...values) | console.log(...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(value) | (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) | ? | Use 'goog.dom.xml'? | ||||||||||||||
|
|
|
|
| ||||||||||||||
Classes |
|
|
|
| ||||||||||||||
ArgumentError | - | ArgumentError | Error | 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 | - |
|
|
| ||||||||||||||
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 | Not sure if all JS VM implementations support this... | ||||||||||||||
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 | - | QName | ? | Part of the E4X implementation in AS... No such beast in JS, so maybe we look at "goog" or even a native utility class? | ||||||||||||||
RangeError | - | RangeError | RangeError | Not sure if all JS VM implementations support this... | ||||||||||||||
ReferenceError | - | ReferenceError | ReferenceError | Not sure if all JS VM implementations support this... | ||||||||||||||
RegExp | - | RegExp | RegExp | Does the regular expression "syntax" of both implementations match? | ||||||||||||||
SecurityError | - | SecurityError | Error | Need utility class and cast a regular Error object to that, for the sake of the Closure Compiler? | ||||||||||||||
String | - | String | String | Not sure if all properties and methods of AS String class map to the JS String class. | ||||||||||||||
SyntaxError | - | SyntaxError | SyntaxError | Not sure if all JS VM implementations support this... | ||||||||||||||
TypeError | - | TypeError | TypeError | Not sure if all JS VM implementations support this... | ||||||||||||||
uint | - | uint | Number | Does the Number object provide all "functionality" of an AS uint? If so, we're good, I think... | ||||||||||||||
URIError | - | URIError | URIError | Not sure if all JS VM implementations support this... | ||||||||||||||
Vector | - | Vector | /** @type {Array.<type>} */ Array | Since a Vector is "nothing more" than a typed Array, we can use Closure annotation to 'force' the Closure Compiler to treat it as such. | ||||||||||||||
VerifyError | - | VerifyError | Error | Need utility class and cast a regular Error object to that, for the sake of the Closure Compiler? | ||||||||||||||
XML | - | XML |
| ? | Part of the E4X implementation in AS... No such beast in JS, so maybe we look at "goog" or even a native utility class? | |||||||||||||
XMLList | - | XMLList | ? | Part of the E4X implementation in AS... No such beast in JS, so maybe we look at "goog" or even a native utility class? | ||||||||||||||
|
|
|
|
|
|
|
|
| ||||||||||
Arithmetic |
|
|
|
| ||||||||||||||
+ | - | + | + |
| ||||||||||||||
-- | - | -- | -- |
| ||||||||||||||
/ | - | / | / |
| ||||||||||||||
++ | - | ++ | ++ |
| ||||||||||||||
% | - | % | % |
| ||||||||||||||
* | - | * | * |
| ||||||||||||||
- | - | - | - |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Arithmetic compound assignment |
|
|
|
| ||||||||||||||
+= | - | += | += |
| ||||||||||||||
/= | - | /= | /= |
| ||||||||||||||
%= | - | %= | %= |
| ||||||||||||||
*= | - | *= | *= |
| ||||||||||||||
-= | - | -= | -= |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Assignment |
|
|
|
| ||||||||||||||
= | - | = | = |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Bitwise |
|
|
|
| ||||||||||||||
& | - | & | & |
| ||||||||||||||
<< | - | << | << |
| ||||||||||||||
~ | - | ~ | ~ |
| ||||||||||||||
| | - | | | | |
| ||||||||||||||
>> | - | >> | >> |
| ||||||||||||||
>>> | - | >>> | >>> |
| ||||||||||||||
^ | - | ^ | ^ |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Bitwise compound assignment |
|
|
|
| ||||||||||||||
&= | - | &= | &= |
| ||||||||||||||
<<= | - | <<= | <<= |
| ||||||||||||||
|= | - | |= | |= |
| ||||||||||||||
>>= | - | >>= | >>= |
| ||||||||||||||
>>>= | - | >>>= | >>>= |
| ||||||||||||||
^= | - | ^= | ^= |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Comment |
|
|
|
| ||||||||||||||
/..**/ |
|
| - | /**/ | /**/ |
| ||||||||||||
// | - | // | // |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Comparison |
|
|
|
| ||||||||||||||
== | - | == | == |
| ||||||||||||||
> | - | > | > |
| ||||||||||||||
>= | - | >= | >= |
| ||||||||||||||
!= | - | != | != |
| ||||||||||||||
< | - | < | < |
| ||||||||||||||
<= | - | <= | <= |
| ||||||||||||||
=== | - | === | === |
| ||||||||||||||
!== | - | !== | !== |
|
|
|
| |||||||||||
|
|
|
|
| ||||||||||||||
Logical |
|
|
|
| ||||||||||||||
&& | - | && | && |
| ||||||||||||||
&&= | - | &&= | ? | ? | ||||||||||||||
! | - | ! | ! |
| ||||||||||||||
|| | - | || | || |
| ||||||||||||||
||= | - | ||= | ? | ? | ||||||||||||||
|
|
|
|
| ||||||||||||||
Other |
|
|
|
| ||||||||||||||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="dd7ec311e7d89aa9-baa63abf-46664fdd-804e8460-64e5a87ef032e806043d14f9"><ac:plain-text-body><![CDATA[ | [] | - | [] | [] |
| ]]></ac:plain-text-body></ac:structured-macro> | ||||||||||||
as | - | as |
| ? | I think we need a utility function | |||||||||||||
, |
|
|
|
| ||||||||||||||
?: |
|
|
|
| ||||||||||||||
delete |
|
|
|
| ||||||||||||||
. |
|
|
|
| ||||||||||||||
in |
|
|
|
| ||||||||||||||
instanceof |
|
|
|
| ||||||||||||||
is |
|
|
|
| ||||||||||||||
:: |
|
|
|
| ||||||||||||||
new |
|
|
|
| ||||||||||||||
{} |
|
|
|
| ||||||||||||||
() |
|
|
|
| ||||||||||||||
/ |
|
|
|
| ||||||||||||||
: |
|
|
|
| ||||||||||||||
typeof |
|
|
|
| ||||||||||||||
void |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
String |
|
|
|
| ||||||||||||||
+ |
|
|
|
| ||||||||||||||
+= |
|
|
|
| ||||||||||||||
" |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
XML |
|
|
|
| ||||||||||||||
@ |
|
|
|
| ||||||||||||||
{} |
|
|
|
| ||||||||||||||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e89f2e24b6803975-431a94f8-45824ed7-92b29946-be4ea5874adbd7025b8afa5a"><ac:plain-text-body><![CDATA[ | [] |
|
|
|
| ]]></ac:plain-text-body></ac:structured-macro> | ||||||||||||
+ |
|
|
|
| ||||||||||||||
+= |
|
|
|
| ||||||||||||||
delete |
|
|
|
| ||||||||||||||
.. |
|
|
|
| ||||||||||||||
. |
|
|
|
| ||||||||||||||
() |
|
|
|
| ||||||||||||||
<> |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Statements |
|
|
|
| ||||||||||||||
break |
|
|
|
| ||||||||||||||
case |
|
|
|
| ||||||||||||||
continue |
|
|
|
| ||||||||||||||
default |
|
|
|
| ||||||||||||||
do...while |
|
|
|
| ||||||||||||||
else |
|
|
|
| ||||||||||||||
for |
|
|
|
| ||||||||||||||
for...in |
|
|
|
| ||||||||||||||
for each...in |
|
|
|
| ||||||||||||||
if |
|
|
|
| ||||||||||||||
label |
|
|
|
| ||||||||||||||
return |
|
|
|
| ||||||||||||||
super |
|
|
|
| ||||||||||||||
switch |
|
|
|
| ||||||||||||||
throw |
|
|
|
| ||||||||||||||
try...catch...finally |
|
|
|
| ||||||||||||||
while |
|
|
|
| ||||||||||||||
with |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Attribute Keywords |
|
|
|
| ||||||||||||||
dynamic |
|
|
|
| ||||||||||||||
final |
|
|
|
| ||||||||||||||
internal |
|
|
|
| ||||||||||||||
native |
|
|
|
| ||||||||||||||
override |
|
|
|
| ||||||||||||||
private |
|
|
|
| ||||||||||||||
protected |
|
|
|
| ||||||||||||||
public |
|
|
|
| ||||||||||||||
static |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Definition keywords |
|
|
|
| ||||||||||||||
... (rest) parameter |
|
|
|
| ||||||||||||||
class |
|
|
|
| ||||||||||||||
const |
|
|
|
| ||||||||||||||
extends |
|
|
|
| ||||||||||||||
function |
|
|
|
| ||||||||||||||
get |
|
|
|
| ||||||||||||||
implements |
|
|
|
| ||||||||||||||
interface |
|
|
|
| ||||||||||||||
namespace |
|
|
|
| ||||||||||||||
package |
|
|
|
| ||||||||||||||
set |
|
|
|
| ||||||||||||||
var |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Directives |
|
|
|
| ||||||||||||||
default xml namespace |
|
|
|
| ||||||||||||||
import |
|
|
|
| ||||||||||||||
include |
|
|
|
| ||||||||||||||
use namespace |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Namespaces |
|
|
|
| ||||||||||||||
AS3 |
|
|
|
| ||||||||||||||
flash_proxy |
|
|
|
| ||||||||||||||
object_proxy |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Primary expression keywords |
|
|
|
| ||||||||||||||
false |
|
|
|
| ||||||||||||||
null |
|
|
|
| ||||||||||||||
this |
|
|
|
| ||||||||||||||
true |
|
|
|
| ||||||||||||||
|
|
|
|
| ||||||||||||||
OLD |
|
|
|
| ||||||||||||||
Inheriting |
|
|
|
| ||||||||||||||
Implementing |
| TBD | TBD |
| ||||||||||||||
Inheriting + Implementing |
| TBD | TBD |
| ||||||||||||||
|
|
|
|
| ||||||||||||||
Fields |
|
|
|
| ||||||||||||||
private |
|
| Inside the constructor function:
|
| ||||||||||||||
protected |
| This is how far I got today ;-) |
|
| ||||||||||||||
public |
|
|
|
| ||||||||||||||
Global Constants |
|
|
|
|