パッケージトップレベル
クラスpublic dynamic class Function
継承Function Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

関数は、ActionScript で呼び出すことのできるコードの基本単位です。ActionScript のユーザー定義関数とビルトイン関数は、どちらも Function クラスのインスタンスである Function オブジェクトで表されます。

クラスのメソッドは、Function オブジェクトとは少し異なります。メソッドは通常の関数オブジェクトとは異なり、関連のクラスオブジェクトと緊密にリンクされています。このため、メソッドまたはプロパティは、同一クラスのすべてのインスタンスで共有される定義を持ちます。メソッドをインスタンスから抽出して、"バインド" メソッドとして扱うことができます。元のインスタンスとのリンクは維持されます。バインドメソッドの場合、this キーワードで、メソッドの実装元オブジェクトを指します。関数については、this で、関数が呼び出されたときの関連オブジェクトを指します。

例を表示

関連項目

Classes
Methods


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義元
  
apply(thisArg:*, argArray:*):*
ActionScript が呼び出す関数内で使用される thisObject の値を指定します。
Function
  
call(thisArg:*, ... args):*
Function オブジェクトが表す関数を呼び出します。
Function
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
メソッドの詳細
apply()メソッド
AS3 function apply(thisArg:*, argArray:*):*

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ActionScript が呼び出す関数内で使用される thisObject の値を指定します。このメソッドは、呼び出される関数に渡されるパラメータも指定します。apply() は Function クラスのメソッドなので、ActionScript 内のすべての Function オブジェクトのメソッドとしても使用できます。

Array オブジェクトとしてパラメータを指定します。カンマ区切りリストとしてパラメータを指定する Function.call() とは異なります。 これは、スクリプトが実際に実行されるまで、渡されるパラメータ数が不明である場合にも便利です。

呼び出された関数が戻り値として指定する値を返します。

パラメータ

thisArg:* (default = NaN) — 関数の適用先のオブジェクトです。
 
argArray:* (default = NaN) — エレメントをパラメータとして関数に渡す配列です。

戻り値
* — 呼び出された関数が指定する値です。

関連項目

call()メソッド 
AS3 function call(thisArg:*, ... args):*

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

Function オブジェクトが表す関数を呼び出します。ActionScript のすべての関数は Function オブジェクトによって表されるので、すべての関数はこのメソッドをサポートしています。

ほとんどの場合、このメソッドの代わりに関数呼び出し演算子(())を使用できます。 関数呼び出し演算子を使うと、コードが簡潔になり読みやすくなります。このメソッドは、主に関数呼び出しの thisObject パラメータを明示的に制御する必要がある場合に役立ちます。通常、関数をオブジェクトのメソッドとして、関数の本体内で呼び出すと、次のように thisObjectmyObject に設定されます。

myObject.myMethod(1, 2, 3);

thisObject が他の異なる場所をポイントするように設定する場合もあります。例えば、オブジェクトのメソッドとして呼び出す関数が、実際には、そのオブジェクトのメソッドとして格納されていない場合などです。

myObject.myMethod.call(myOtherObject, 1, 2, 3);

関数をオブジェクトのメソッドとしてではなく通常の関数として呼び出すには、値 null を、thisObject パラメータに渡します。例えば、次の 2 つの関数呼び出しは同じです。

Math.sin(Math.PI / 4)
  Math.sin.call(null, Math.PI / 4)

呼び出された関数が戻り値として指定する値を返します。

パラメータ

thisArg:* (default = NaN) — 関数の本体内で thisObject の値を示すオブジェクトです。
 
... args — 関数に渡されるパラメータです。 指定できるパラメータの数は 0 個以上です。

戻り値
*

関連項目

例の使用法
FunctionExample.as

次の例では、FunctionExampleSimpleCollectionEventBroadcasterEventListener クラスを使用して、ActionScript での関数の様々な使用法を示しています。 これを行うには、以下の手順を実行します。
  1. FunctionExample のコンストラクタでは、simpleColl という名前のローカル変数を作成し、この変数に 1 から 8 までの整数の配列を作成します。
  2. simpleColl オブジェクトを、trace() を使用して出力します。
  3. EventListener オブジェクト listenersimpleColl に追加します。
  4. insert()remove() 関数が呼び出されると、リスナーはそれぞれのイベントに応答します。
  5. greaterThanFourColl という名前の 2 番目の SimpleCollection オブジェクトを作成します。
  6. greaterThanFourColl オブジェクトには、simpleColl.select() の結果(引数4 と匿名関数を使用)が割り当てられます。SimpleCollection オブジェクトの select メソッドは、匿名関数パラメータをブロックとして使用する内部イテレータです。
package {
    import flash.display.Sprite;
    
    public class FunctionExample extends Sprite {
        public function FunctionExample() {
            var simpleColl:SimpleCollection;
            simpleColl = new SimpleCollection(0, 1, 2, 3, 4, 5, 6, 7, 8);
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 8

            var listener:EventListener = new EventListener();
            simpleColl.addListener(listener);
            simpleColl.insert(9);        // itemInsertedHandler: 9
            simpleColl.remove(8);        // itemRemovedHandler: 8
            trace(simpleColl);        // 0, 1, 2, 3, 4, 5, 6, 7, 9

            var greaterThanFourColl:SimpleCollection;
            greaterThanFourColl = simpleColl.select(4, function(item:int, value:int){ return item > value });
            trace(greaterThanFourColl);    // 5, 6, 7, 9
        }
    }
}
    
import flash.display.Sprite;
    
class EventBroadcaster {
    private var listeners:Array;

    public function EventBroadcaster() {
        listeners = new Array();
    }
        
    public function addListener(obj:Object):void {
        removeListener(obj);
        listeners.push(obj);
    }
        
    public function removeListener(obj:Object):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            if(listeners[i] == obj) {
                listeners.splice(i, 1);
            }
        }
    }
    
    public function broadcastEvent(evnt:String, ...args):void {
        for(var i:uint = 0; i < listeners.length; i++) {
            listeners[i][evnt].apply(listeners[i], args);
        }
    }    
}
    
class SimpleCollection extends EventBroadcaster {
    private var arr:Array;
        public function SimpleCollection(... args) {
        arr = (args.length == 1 && !isNaN(args[0])) ? new Array(args[0]) : args;
    }
        
    public function insert(obj:Object):void {
        remove(obj);
        arr.push(obj);
        broadcastEvent("itemInsertedHandler", obj);
    }
        
    public function remove(obj:Object):void {
        for(var i:uint = 0; i < arr.length; i++) {
            if(arr[i] == obj) {
                var obj:Object = arr.splice(i, 1)[0];
                broadcastEvent("itemRemovedHandler", obj);
            }
        }
    }

    public function select(val:int, fn:Function):SimpleCollection {
        var col:SimpleCollection = new SimpleCollection();
        for(var i:uint = 0; i < arr.length; i++) {
            if(fn.call(this, arr[i], val)) {
                col.insert(arr[i]);
            }
        }
        return col;
    }
        
    public function toString():String {
        var str:String = new String();
        for(var i:uint = 0; i < arr.length - 1; i++) {
            str += arr[i] + ", ";
        }
        str += arr[arr.length - 1];
        return str;
    }
}

class EventListener {
    public function EventListener() {
    }
    
    public function itemInsertedHandler(obj:Object):void {
        trace("itemInsertedHandler: " + obj);
    }
    
    public function itemRemovedHandler(obj:Object):void {
        trace("itemRemovedHandler: " + obj);        
    }
}