| パッケージ | トップレベル |
| public dynamic class Function | |
| 継承 | Function Object |
クラスのメソッドは、Function オブジェクトとは少し異なります。メソッドは通常の関数オブジェクトとは異なり、関連のクラスオブジェクトと緊密にリンクされています。このため、メソッドまたはプロパティは、同一クラスのすべてのインスタンスで共有される定義を持ちます。メソッドをインスタンスから抽出して、"バインド" メソッドとして扱うことができます。元のインスタンスとのリンクは維持されます。バインドメソッドについては、this キーワードで、メソッドの実装元オブジェクトを指します。関数については、this で、関数が呼び出されたときの関連オブジェクトを指します。
関連項目
| メソッド | 定義 | ||
|---|---|---|---|
| apply(thisObject:Object, argArray:Array = null):void
ActionScript が呼び出す関数内で使用される
thisObject の値を指定します。 | Function | ||
| call(thisObject:Object, parameter1:String = null):void
Function オブジェクトが表す関数を呼び出します。
| Function | ||
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() | toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
| apply | () | メソッド |
AS3 function apply(thisObject:Object, argArray:Array = null):void
ActionScript が呼び出す関数内で使用される thisObject の値を指定します。このメソッドは、呼び出される関数に渡されるパラメータも指定します。apply() は Function クラスのメソッドなので、ActionScript 内のすべての Function オブジェクトのメソッドとしても使用できます。
パラメータは、カンマ区切りリストとしてパラメータを指定する Function.call() とは異なり、Array オブジェクトとして指定します。これは、スクリプトが実際に実行されるまで、渡されるパラメータ数が不明である場合にも便利です。
呼び出された関数が戻り値として指定する値を返します。
パラメータthisObject:Object — 関数の適用先のオブジェクトです。
|
|
argArray:Array (default = null) — エレメントをパラメータとして関数に渡す配列です。
|
関連項目
| call | () | メソッド |
AS3 function call(thisObject:Object, parameter1:String = null):voidFunction オブジェクトが表す関数を呼び出します。ActionScript のすべての関数は Function オブジェクトによって表されます。したがって、すべての関数はこのメソッドをサポートしています。
ほとんどの場合、このメソッドの代わりに関数呼び出し演算子 (()) を使用できます。関数呼び出し演算子を使うと、コードが簡潔になり読みやすくなります。このメソッドは、主に関数呼び出しの thisObject パラメータを明示的に制御する必要がある場合に役立ちます。通常、関数をオブジェクトのメソッドとして、関数の本体内で呼び出すと、次のように thisObject が myObject に設定されます。
myObject.myMethod(1, 2, 3);
thisObject が他の異なる場所をポイントするように設定する場合もあります。たとえば、オブジェクトのメソッドとして呼び出す関数が、実際には、そのオブジェクトのメソッドとして格納されていない場合などです。
myObject.myMethod.call(myOtherObject, 1, 2, 3);
関数をオブジェクトのメソッドとして呼び出さずに通常の関数として呼び出すには、thisObject パラメータに値 null を渡します。たとえば、次の 2 つの関数呼び出しは同じです。
Math.sin(Math.PI / 4) Math.sin.call(null, Math.PI / 4)
呼び出された関数が戻り値として指定する値を返します。
パラメータthisObject:Object — 関数の本体内で thisObject の値を示すオブジェクトです。
|
|
parameter1:String (default = null) — 関数に渡すパラメータです。指定できるパラメータの数は 0 個以上です。
|
関連項目
FunctionExample、
SimpleCollection、EventBroadcaster、および EventListener クラスを使用して、
ActionScript での関数のさまざまな使用法を示しています。 これを行うには、以下の手順を実行します。
FunctionExample のコンストラクタでは、
simpleColl という名前のローカル変数を作成し、この変数に 1 から
8. trace() を使用して、simpleColl オブジェクトを出力します。listener を simpleColl に追加します。insert() 関数と remove() 関数が呼び出されると、リスナーは
それぞれのイベントに応答します。greaterThanFourColl という名前の 2 番目の SimpleCollection オブジェクトを作成します。greaterThanFourColl オブジェクトには、引数 4 を使用した
simpleColl.select() の結果が割り当てられます。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);
}
}