import flash.display.Sprite; var count:int = 1; ArgumentsExample() function ArgumentsExample() { firstFunction(); } function firstFunction() { trace(count + ": firstFunction"); secondFunction(arguments.callee); } function secondFunction(caller:Function) { trace(count + ": secondFunction "); count++; if(count<3) caller(); }
输出:
1: firstFunction
1: secondFunction
2: firstFunction
2: secondFunction
以上代码演示如何获得对函数的引用,该函数调用名为 secondFunction() 的函数。
官方解释:
用于存储和访问函数参数的参数对象。在一个函数体内,可以使用局部参数变量来访问其参数对象。
这些参数存储为数组元素:第一个存取为 arguments[0]
,第二个存取为 arguments[1]
,依此类推。arguments.length
属性表示传递给函数的参数数目。传递的参数数目可能与函数声明的数目有所不同。
与以前版本的 ActionScript 不同,ActionScript 3.0 中不包含 arguments.caller
属性。要获得对调用当前函数的函数的引用,必须将一个引用作为参数传递给该函数。可从 arguments.callee
示例中找到该技术的示例。
针对:要获得对调用当前函数的函数的引用,必须将一个引用作为参数传递给该函数。这句话。理解不透
... (rest) parameter 定义关键字 用法 function functionName(parameter0, parameter1, ...rest){ // statement(s) }
... (rest)与arguments用法差不多。不过没有arguments的callee方法。