パッケージ | トップレベル |
クラス | public final class Function |
継承 | Function Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
クラスのメソッドは、Function オブジェクトとは少し異なります。メソッドは通常の関数オブジェクトとは異なり、関連のクラスオブジェクトと緊密にリンクされています。このため、メソッドまたはプロパティは、同一クラスのすべてのインスタンスで共有される定義を持ちます。メソッドをインスタンスから抽出して、"バインド" メソッドとして扱うことができます。元のインスタンスとのリンクは維持されます。バインドメソッドの場合、this
キーワードで、メソッドの実装元オブジェクトを指します。関数については、this
で、関数が呼び出されたときの関連オブジェクトを指します。
メソッド | 定義元 | ||
---|---|---|---|
ActionScript が呼び出す関数内で使用される thisObject の値を指定します。 | Function | ||
Function オブジェクトが表す関数を呼び出します。 | Function | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
apply | () | メソッド |
AS3 function apply(thisArg:*, argArray:*):*
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ActionScript が呼び出す関数内で使用される thisObject
の値を指定します。このメソッドは、呼び出される関数に渡されるパラメーターも指定します。apply()
は Function クラスのメソッドなので、ActionScript 内のすべての Function オブジェクトのメソッドとしても使用できます。
Array オブジェクトとしてパラメーターを指定します。カンマ区切りリストとしてパラメーターを指定する Function.call()
とは異なります。これは、スクリプトが実際に実行されるまで、渡されるパラメーター数が不明である場合にも便利です。
呼び出された関数が戻り値として指定する値を返します。
パラメーター
thisArg:* (default = NaN ) — 関数の適用先のオブジェクトです。
| |
argArray:* (default = NaN ) — エレメントをパラメーターとして関数に渡す配列です。
|
* — 呼び出された関数が指定する値です。
|
関連する API エレメント
call | () | メソッド |
AS3 function call(thisArg:*, ... args):*
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Function オブジェクトが表す関数を呼び出します。ActionScript のすべての関数は Function オブジェクトによって表されるので、すべての関数はこのメソッドをサポートしています。
ほとんどの場合、このメソッドの代わりに関数呼び出し演算子(()
)を使用できます。関数呼び出し演算子を使うと、コードが簡潔になり読みやすくなります。このメソッドは、主に関数呼び出しの thisObject
パラメーターを明示的に制御する必要がある場合に役立ちます。通常、関数をオブジェクトのメソッドとして、関数の本体内で呼び出すと、次のように thisObject
が myObject
に設定されます。
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 個以上です。
|
* |
関連する API エレメント
FunctionExample
、SimpleCollection
、EventBroadcaster
、EventListener
クラスを使用して、ActionScript での関数の様々な使用法を示しています。これを行うには、以下の手順を実行します。
FunctionExample
のコンストラクターでは、simpleColl
という名前のローカル変数を作成し、この変数に1
から8
までの整数の配列を作成します。simpleColl
オブジェクトを、trace()
を使用して出力します。- EventListener オブジェクト
listener
をsimpleColl
に追加します。 insert()
とremove()
関数が呼び出されると、リスナーはそれぞれのイベントに応答します。greaterThanFourColl
という名前の 2 番目の SimpleCollection オブジェクトを作成します。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); } }
Tue Jun 12 2018, 10:34 AM Z