2011-02-05 7 views
0

リファレンスを介して(直接ではなく)関数を呼び出す例は何ですか?リファレンスを介して関数を呼び出す例は何ですか?

function myFunction():void { trace("calling my function!"); } 
var functions:Array = [myFunction]; 

functions[0](); // traces "calling my function!" 

アイデアは、すべての関数もオブジェクトであることであること:私は質問を理解していれば

+1

function functionName(arg:*):* {...} 'ではなく、' var functionName:Function = function(arg:*):* {...} 'のような意味ですか? – Taurayi

答えて

3

は、あなたがこのような何かをしたいです。 myFunction()を持っているとき、 "myFunction"を変数(注:no() ')として扱うと、その関数への参照を渡すことができます。これは、たとえば、コールバックが機能する方法です。例えば

:あなたのaddEventListener呼び出しで

this.addEventListener(MouseEvent.CLICK, clickHandler); 
function clickHandler(e:MouseEvent):void { 
trace("CLICK!"); 
} 

、あなたはclickHandler関数への参照を渡しています。 Flashは、このオブジェクトがMouseEvent.CLICK型のイベントを受け取るたびに、参照される関数(この場合はclickHandler)を呼び出す必要があることを認識します。

それは意味がありますか?

+1

注目すべきは、 'var callback:Function = someFunction; 'のように' Function'型の変数に関数参照を実際に格納できるということです。関数に加えて引数/パラメータを格納したい場合は、 'var parameters:Array'です。その後、Functionオブジェクトのapply()メソッド、 'callback.apply(null、parameters)'を使って関数を呼び出すことができます。 – epologee

関連する問題