• 2007-09-27

    arguments 类

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://wxsr.blogbus.com/logs/10047500.html

     
    Posted:2007-02-26 12:40
     
     
    arguments 类
     
    arguments 类(包含3个属性)

              |__ callee:Object;

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


    |__caller:Object;对调用当前正在执行的函数的函数的引用;如果未从其它函数调用它,则为 null

              |__length:Number;

    传递给函数的参数数目。








    说到这个类可能有的朋友不怎么熟悉,但他却很有用。下面说说他的一些用法跟扩展。

























    arguments





















    arguments对象用于存储和访问函数的参数。尽管它在函数体内部,也可以用本地 arguments 变量对其进行访问。
    这些参数作为数组元素存储,第一个参数作为 arguments[0] 被访问,第二个参数作为 arguments[1] 被访问,依此类推。
    arguments.length 属性表示传递给函数的参数数目。请注意,传递给函数的参数与该函数声明的参数的数目可能不同。
    先举个简单的例子:
    function 字母(){
    for(var i=0;i <arguments.length;i++){
    trace(arguments[i]);
    }
    }
    字母("a","b","c","d","e");
    从这个例子我们可以看到尽管函数 :字母()没有预定义变量但我们却可以通过arguments访问后来才定义的变量
    再来看个例子
    function num(argu)
    {for(var i=0;i <arguments.length;i++)
    {trace(arguments[i]);}
    }
    num (1,2,3,4,5)
    这里我们又可以看出尽管num()函数里我们只是定义了一个变量但我们却也可以通过
    arguments 的方法访问到后来才定义的变量;
    下边看个例子帮助理解下caller属性:
    var function1:Function = function () {
     function2 ("hello来自function1");
    };
    var function2:Function = function (aString:String) {
     if (arguments.caller == function1) {
      trace ("function2被function1引用");
      trace (aString);
     }
    };
    function1 ();

    现在理解了吧~~


    现在我们来深入了解下~arguments的用法:
    看下边个例子
    function type (argu) {
     for (var i = 0; i < arguments.length; i++) {
      arguments[i].func ();
      for (var j in arguments[i]) {
       if (arguments[i].link == "No1") {
        trace ("新属性=" + arguments[i].link);
        bol = true;
       }
       if (arguments[i].link == "No2") {
        trace ("新属性=" + arguments[i].link);
        bol = true;
       }
       if (bol) {
        delete bol;
        break;
       }
      }
     }
    }
    type ({link:"No1", func:No1_func}, {link:"No2", func:No2_func});
    function No1_func () {
     var tmp = 0;
     trace ("No1_func");
     if (arguments.callee == No1_func) {
      child_func1 ();
     }
    }
    function child_func1 () {
     trace ("child_func1");
    }
    function No2_func () {
     var tmp = 2;
     trace ("No2_func");
     if (arguments.callee == No2_func) {
      child_func2 ();
     }
    }
    function child_func2 () {
     trace ("child_func2");
    }
    当你理解了就会发现arguments的好用了~~

    随机文章:

    fms聊天室 2007-09-27
    fms中介函数 2007-09-27
    五子棋 2007-09-27

    收藏到:Del.icio.us




    评论

  • 踩一脚

发表评论

您将收到博主的回复邮件
记住我