包 | 顶级 |
类 | public class arguments |
继承 | arguments Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 8 |
这些参数存储为数组元素:第一个存取为 arguments[0]
,第二个存取为 arguments[1]
,依此类推。arguments.length
属性表示传递给函数的参数数目。传递的参数数目可能与函数声明的数目有所不同。
与以前版本的 ActionScript 不同,ActionScript 3.0 中不包含 arguments.caller
属性。若要获得对调用当前函数的函数的引用,必须将一个引用作为参数传递给该函数。可从 arguments.callee
示例中找到该技术的示例。
ActionScript 3.0 中包括一个新的 ...(rest)
关键字,建议用该关键字替代参数类。
另请参见
属性 | 定义方 | ||
---|---|---|---|
callee : Function
对当前正在执行的函数的引用。 | arguments | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
length : Number
传递给函数的参数数目。 | arguments | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object |
callee | 属性 |
public var callee:Function
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 8 |
对当前正在执行的函数的引用。
secondFunction()
的函数。firstFunction()
函数具有布尔参数 true
,以证实 secondFunction()
成功调用了 firstFunction()
,并防止各个函数因相互间调用而无限循环。
因为 callSecond
参数为 true
,所以 firstFunction()
调用 secondFunction()
,并将一个对自身的引用作为唯一的参数传递。函数 secondFunction()
接收该参数并使用名为 caller
的参数存储它,该参数属于 Function 数据类型。然后,使用 secondFunction()
中的 caller
参数来调用 firstFunction
函数,但这次将 callSecond
参数设置为 false
。
当执行返回到 firstFunction()
时,执行 trace()
语句,因为 callSecond
为 false
。
package { import flash.display.Sprite; public class ArgumentsExample extends Sprite { private var count:int = 1; public function ArgumentsExample() { firstFunction(true); } public function firstFunction(callSecond:Boolean) { trace(count + ": firstFunction"); if(callSecond) { secondFunction(arguments.callee); } else { trace("CALLS STOPPED"); } } public function secondFunction(caller:Function) { trace(count + ": secondFunction\n"); count++; caller(false); } } }
length | 属性 |
public var length:Number
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 8 |
传递给函数的参数数目。此数目可以大于或小于函数声明的参数数目。
arguments
属性(如 callee
和 length
)的用法。
package { import flash.display.Sprite; public class ArgumentsExample extends Sprite { public function ArgumentsExample() { println("Hello World"); } public function println(str:String):void { trace(arguments.callee == this.println); // true trace(arguments.length); // 1 trace(arguments[0]); // Hello World trace(str); // Hello World } } }