zoukankan      html  css  js  c++  java
  • AS3.0 ...args、...rest和arguments类

    在操作数组的时候,会遇到这样的参数...args或...rest

    查了下资料,摘录如下

    ...(rest)parameter 定义关键字

    用法:

    function functionName(parameter0, parameter1, ...rest){ 
        // statement(s) 
    } 

    指定函数将接受任意多个以逗号分隔的参数。参数列表成为了在整个函数体中可用的数组。在参数声明中,数组的名称在 ... 字符后指定。参数可以拥有保留字以外的任意名称。

    如果与其它参数共同使用,则 ...(其余的)参数声明必须是最后指定的参数。只有传递给函数的参数数目超过其它参数的数目时,才会填充 ...(其余的)参数数组。

    逗号分隔参数列表中的每一个参数都将放置在该数组的一个元素中。如果您传递了 Array 类的实例,则整个数组会放置到 ...(其余的)参数数组的单个元素中。

    使用此参数会使 arguments 对象不可用。尽管 ...(其余的)参数提供了与 arguments 数组和 arguments.length 属性相同的功能,但是未提供与由 arguments.callee 提供的功能类似的功能。使用 ...(其余的)参数之前,请确保不需要使用 arguments.callee

    例子:

    package {
        import flash.display.MovieClip;
        
        public class RestParamExample extends MovieClip {
            public function RestParamExample() {
                traceParams(100, 130, "two"); // 100,130,two
                trace(average(4, 7, 13));     // 8
            }
        }
    }
    
    
    function traceParams(... rest) {
         trace(rest);
     }
     
    function average(... args) : Number{
        var sum:Number = 0;
        for (var i:uint = 0; i < args.length; i++) {
            sum += args[i];
        }
        return (sum / args.length);
    }

    arguments类

    public  class  arguments

    用于存储和访问函数参数的参数对象。在一个函数体内,可以使用局部参数变量来访问其参数对象。

    callee属性

    public var callee:Function

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

    实例:

     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);
            }        
        }
    } 
  • 相关阅读:
    linux内核主要模块图
    进程的用户栈和内核栈
    Linux0.11内核几种地址(逻辑地址、线性地址、物理地址)的含义
    实模式与保护模式
    Linux多线程与同步
    java+selenium——鼠标左击
    java+selenium——键盘操作+复制粘贴(keys类)
    java+selenium——语法简介
    java+selenium——鼠标悬停从一个位置移动到另外一个位置
    java+selenium——简单截图+保存在java工程目录下=====简单截图+时间+保存在java工程目录下
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/2825454.html
Copyright © 2011-2022 走看看