• 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);
            }        
        }
    } 
  • 相关阅读:
    Google Map API Version3 :代码添加和删除marker标记
    ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)
    ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)(续)纯代码
    ArcGIS Server开发教程系列(7)使用ArcGIS API for Javascript-Hello World
    ArcGIS Server开发教程系列(3)切片
    3.1、常用图片格式
    【Emmet】HTML速写之Emmet语法规则
    2.11、特征布局实例讲习
    2.10、background属性
    2.9、定位
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/2825454.html
Copyright © 2020-2023  润新知