サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

Arguments (オブジェクト)

ID: FN0108009 Product: Flash

Platform: All
Version: 5.0 and above

関数を実行すると、Argumentsオブジェクトが、その関数のローカル変数argumentsに格納されます。Argumentwsオブジェクトは、配列です[*1]。ActionScriptでは、関数に定義された引数の個数にかかわらず、任意の数の引数を渡すことができます。argumentsには、実行された関数に渡されたすべての引数が、インデックス0から順に配列エレメントとして格納されます。引数値は、配列アクセス演算子[]で参照できます。

また、Argumentsオブジェクトは、calleecallerlengthなどのプロパティをもちます。

[*1] Flash 5では、Argumentsオブジェクトは配列ではなかったため、Arrayクラスのメソッドをサポートしませんでした。

シンタックス
arguments

arguments[エレメント番号]

arguments.プロパティ名

表001■Argumentsオブジェクトのプロパティ
プロパティ 説明

arguments.callee

実行している関数を参照します。
arguments.caller 実行中の関数を呼出した大元の関数を参照します。Flash Player 6以降でサポートされます。
arguments.length 実行している関数に渡された引数の数を返します。

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 MoockActionscript 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.