在函数中arguments的使用

用于存储和访问函数参数的参数对象。在一个函数体内,可以使用局部参数变量来访问其参数对象。
这些参数存储为数组元素:第一个存取为 arguments[0],第二个存取为 arguments[1],依此类推。arguments.length 属性表示传递给函数的参数数目。传递的参数数目可能与函数声明的数目有所不同。
与以前版本的 ActionScript 不同,ActionScript 3.0 中不包含 arguments.caller 属性。要获得对调用当前函数的函数的引用,必须将一个引用作为参数传递给该函数。可从 arguments.callee 示例中找到该技术的示例。
ActionScript 3.0 中包括一个新的 ...(rest) 关键字,建议用该关键字替代参数类。

属性详细信息

callee

属性
public var callee:Function
语言版本:  ActionScript 3.0
运行时版本:  AIR 1.0 Flash Player 8, Flash Lite 4

对当前正在执行的函数的引用。


示例  ( 如何使用本示例 )
以下代码演示如何获得对函数的引用,该函数调用名为 secondFunction() 的函数。firstFunction() 函数具有布尔参数 true ,以证实 secondFunction() 成功调用了 firstFunction() ,并防止各个函数因相互间调用而无限循环。

因为 callSecond 参数为 true ,所以 firstFunction() 调用 secondFunction() ,并将一个对自身的引用作为唯一的参数传递。函数 secondFunction() 接收该参数并使用名为 caller 的参数存储它,该参数属于 Function 数据类型。然后,使用 secondFunction() 中的 caller 参数来调用 firstFunction 函数,但这次将 callSecond 参数设置为 false

当执行返回到 firstFunction() 时,执行 trace() 语句,因为 callSecondfalse

  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, Flash Lite 4

传递给函数的参数数目。此数目可以大于或小于函数声明的参数数目。

ArgumentsExample.as


以下示例显示各种 arguments 属性(如 calleelength )的用法。
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
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值