JavaScript と ActionScript3.0 の違いについて考察。 Adobeからダウンロードできるマニュアルの dev_guide_html.pdf のp.122(正確なPDFのページ数では129p)から「Differences between ActionScript and JavaScript: an overview」という項目があり、詳しく載せられています。 - dev_guide_html.pdf - DEVELOPING ADOBE AIR APPLICATIONS WITH HTML AND AJAX - http://livedocs.adobe.com/air/1/devappshtml/dev_guide_html.pdf 要約すると以下の感じです。 ●変数の型付け 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 に詳しく載せられていました。 - Wikipedia - ECMAScript -- http://ja.wikipedia.org/wiki/ECMAScript こちらも転載&ちょっと修正したものが以下になります ▲[参考] 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 .NET|8.0|ECMA-262 4th草案(*1)| |Adobe Flash9/Flex3 |ActionScript|3|ECMA-262 4th草案とECMA-357(*2)| -(*1) Microsoft.NETのJScript.NETは、ECMA-262 4th 草案に基づいているとは言え、2001年頃のMicrosoftの草案であり、現在の草案と異なります。 -(*2) ECMA-357 は、E4X というXMLを操作するための規格です。