ACTIONSCRIPTのオブジェクト指向プログラミング、今日のまとめ
p.65~95
- クラス定義
抽象クラスはない。実行時プロパティ追加をしたい場合は、dynamic宣言をする。(ドキュメントだと”属性を割り当てる。”という表現になっている。ちょっと日本語変だな。)クラスに宣言できるのは、public,internal,final,dynamic。デフォルトはinternal。privateとprotectedはクラス定義内のプロパティのみ。(ややこしい。)
private宣言したプロパティへアクセスをした場合、strictモードはドット演算子からのアクセスはコンパイルエラーとなり、プロパティアクセス演算子(hoge["foo"])はランタイムエラー。standardモードはどちらもランタイムエラー。(コンパイル意味ないじゃん。)dynamicなクラスの場合はstrictのドットによるアクセス以外はundefinedを返す。メソッドを関数式代入によって定義するとoverrideやfinal宣言ができない。protectedは同一パッケージかに関係なくサブクラスであれば参照可能。パッケージ内としたければinternalを使う。
- クラス変数
スコープチェーンに含まれているので、サブクラスからでも直接参照可能です。
- バインドメソッド
this参照を保持したメソッドクロージャ。インスタンスメソッドは自動的にバインドメソッドとして処理される。(addEventListenerでも大丈夫)
- 列挙
static constをもつfinalクラスを定義すればいいよ。(ってかいてるけど、あんまり便利じゃないよね。)
- アセットクラスの埋め込み
動画や音声データをSWFに埋め込んでおくことができる。(って何の脈略もなくいきなり説明が入ってる。あとでまた説明あるのかなぁ。)
- インターフェース
めちゃ普通。(パラメータの変数名を変えられるとかどうでもいいです。...(rest)について言及されていなかったので、動作確認した方がいい。)
- プロトタイプはどこいった?
あるが、ECMAScriptとの互換性維持のためだけで名前空間で制御する。デフォルトコンパイルオプションでas3=true,es=falseとなってる。(実質なくなったと思った方がいい?)