public call(thisObject:Object, [parameter1:Object])
Function オブジェクトが表す関数を呼び出します。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:Object (オプション) - myFunction に渡すパラメータ。指定できるパラメータの数は 0 個以上です。
次の例では、Function.call() を使用することで、関数をオブジェクトに格納しないまま、別のオブジェクトのメソッドとして動作させます。
function myObject() {
}
function myMethod(obj) {
trace("this == obj?" + (this == obj));
}
var obj:Object = new myObject();
myMethod.call(obj, obj);
trace() ステートメントの出力は次のようになります
this == obj? true
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート