|
Macromedia
Flash非公式テクニカルノート
Arguments (オブジェクト)
ID: FN0108009 |
Product: Flash |
Platform: All
Version: 5.0 and above
関数を実行すると、Argumentsオブジェクトが、その関数のローカル変数argumentsに格納されます。Argumentwsオブジェクトは、配列です[*1]。ActionScriptでは、関数に定義された引数の個数にかかわらず、任意の数の引数を渡すことができます。argumentsには、実行された関数に渡されたすべての引数が、インデックス0から順に配列エレメントとして格納されます。引数値は、配列アクセス演算子[]で参照できます。
また、Argumentsオブジェクトは、calleeやcaller、lengthなどのプロパティをもちます。
[*1] Flash 5では、Argumentsオブジェクトは配列ではなかったため、Arrayクラスのメソッドをサポートしませんでした。
|
シンタックス
arguments
arguments[エレメント番号]
arguments.プロパティ名
表001■Argumentsオブジェクトのプロパティ
Player
Flash 5以降。Flash Player 6でarguments.callerプロパティが追加。
例
つぎのスクリプトでは、関数に引数の定義がなくても、渡されたすべての引数を[出力]パネルに表示します。
スクリプト001■渡されたすべての引数を[出力]パネルに表示
// タイムライン: _root
// フレームアクション
function xTraceArguments():Void {
var nLength:Number = arguments.length;
for (var i = 0; i<nLength; ++i) {
trace([i, arguments[i], typeof arguments[i]]);
}
}
xTraceArguments(0, "a", this);
// [出力]パネルの表示
0,0,number
1,a,string
2,_level0,movieclip
|
以下に定義するクラスMyArrayはArray(配列)クラスを継承し、コンストラクタ関数はArrayと同じく複数のシンタックスで引数を受取ります。
スクリプト002■配列を継承して複数のシンタックスでコンストラクタの引数を受取るクラス
// ActionScript 2.0クラス定義ファイル: MyArray.as
dynamic class MyArray extends Array { // Arrayクラスを継承
function MyArray() { // コンストラクタ関数
if (arguments.length == 1 && !isNaN(arguments[0])) {
this.length = arguments[0];
} else {
this.push.apply(this, arguments);
}
}
}
// Flash(SWF)ムービー: テスト用
// フレームアクション
var my0_array:MyArray = new MyArray();
var my1_array:MyArray = new MyArray(3);
var my2_array:MyArray = new MyArray("a");
var my3_array:MyArray = new MyArray(0, 1, 2);
trace(my0_array.length); // 出力: 0
trace(my1_array); // 出力: undefined,undefined,undefined
trace(my2_array); // 出力: a
trace(my3_array); // 出力: 0,1,2
|
参考文献
Flash MX 2004 ActionScript Language Reference: arguments object
Colin Moock『Actionscript for Flash MX: The Definitive Guide』O'REILLY
David Flanagan『JavaScript第3版』オライリー・ジャパン
_____
作成者: 野中文雄
更新日: 2005年6月14日 例の追加。最新のドキュメントに合わせて加筆・補正およびレイアウト変更
作成日: 2001年8月16日
Copyright ©
2001-2006 Fumio Nonaka. All rights reserved.
|