実はオブジェクト指向に関係する技術には全く疎い Byerkut さん。
今日はクロージャというやつを初めて使ってみました。
クロージャはオブジェクト指向とはつながりが薄いのですが、オブジェクト指向をサポートする言語には必ずと言っていいほど存在している技術です。残念ですがあまり理解していないので要約はできません。でも、多少の誤解を恐れずに言うとクロージャとは「関数の内部に存在できる同じスコープを持つ関数」です。
たとえばこんなことができます。
function test() { var hoge:int = 4; this.addEventListener(Event.ENTER_FRAME, function (event:Event) { trace(hoge); }); }
test() 関数の中でイベントリスナーとして無名の関数を登録している点に注目してください。この関数は test() と同じスコープを持っています。つまり test() で宣言した変数 hoge が見えるのです。このソースを実行すると ENTER_FRAME イベントが発生するたび hoge の中身が出力パネルに表示されます。
これは使いようによっては便利かもしれません。
Contributions