JavaScript と ActionScript3.0 の違いについて考察。

Adobeからダウンロードできるマニュアルの dev_guide_html.pdf のp.122(正確なPDFのページ数では129p)から「Differences between ActionScript and JavaScript: an
overview」という項目があり、詳しく載せられています。

要約すると以下の感じです。

変数の型付け *

ActionScript3.0では、変数の型付けを行うことができます。変数宣言「var」で「var 変数名:型名」のようにして変数の型付けを行います。以下は、関数をActionScript3.0用に書き直したものです。例を見てみましょう。以下は、Adobe AIRでMP3の再生を行う例です。型付けを行うことで、プログラムの入力ミス(型の間違い)を検出することができるので、安心してプログラムを作ることができます。また、プログラミングの時に強力な入力補完機能を使うことができます。

// JavaScript の場合

var file = new air.File("test.mp3");
var sound = air.Sound(file);
sound.play();

// ActionScript3.0の場合

var file:File = new File("test.mp3");
var sound = new Sound(file);
sound.play();

クラスベースのオブジェクト指向 *

JavaScriptは、プロトタイプベースでしたが、ActionScript3.0では、クラスベースでプログラムを作ることができます。これにより、Javaに近い形となりました。

public class ExampleClass {
  public var x:Number;
  public function ExampleClass(input:Number):void {
    x = input;
  }
  public function greet():void {
    trace("The value of x is: ", x);
  }
}

パッケージとネームスペース *

ActionScript3.0にはパッケージとネームスペースがあります。パッケージにより、Flash の各機能がカテゴリごとに分かれています。また、クラスのプロパティごとに、public、private、protected、internal のように、ネームスペースを指定することができます。

関数の引数にデフォルト値が指定できる *

ActionScript3.0では、以下のように、関数を定義した時に、引数にデフォルト値が定義できるようになっています。

function root(n:Number, p:Number = 1):Number {
  return Math.pow(n, 1/p);
}

また、JavaScript でも似たようなことはできますが、明確に可変引数をもつ関数を定義できます。

function average(... args) : Number{
  var sum:Number = 0;
  for (var i:int = 0; i < args.length; i++) {
    sum += args[i];
  }
  return (sum / args.length);
}

イベントモデルの統一 *

イベントモデルが統一されています。「object.addEventListener(イベント名, 処理を行う関数);」の形式でイベントを登録します。

以上、dev_guide_html.pdf の「Differences between ActionScript and JavaScript: an
overview」を読んでの要約と(勝手な感想)でした。

ECMAScript への対応状況 *

その他、ECMAScriptのバージョンや対応状況は、Wikipedia に詳しく載せられていました。

こちらも転載&ちょっと修正したものが以下になります

[参考] ECMAScript(JavaScriptの標準規格)への対応状況 *

アプリケーション 呼び方 バージョン準拠するECMAScript
Mozilla(Firefox 2) JavaScript 1.7 ECMA-262 3rd edition と ECMA-357(*2)
Internet Explorer 7 JScript 5.7 ECMA-262 3rd edition
Opera 9 JavaScript/ECMAScriptなしECMA-262 3rd edition
Safari3 / AIR1 JavaScriptなしECMA-262 3rd edition
Microsoft .NET JScript .NET8.0ECMA-262 4th草案(*1)
Adobe Flash9/Flex3 ActionScript3ECMA-262 4th草案とECMA-357(*2)
  • (*1) Microsoft.NETのJScript.NETは、ECMA-262 4th 草案に基づいているとは言え、2001年頃のMicrosoftの草案であり、現在の草案と異なります。
  • (*2) ECMA-357 は、E4X というXMLを操作するための規格です。