• arguments.callee.caller


    1.Arguments
    Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments对象。arguments对象只有函数开始时才可用。

    function ArgTest(a, b){
       var i, s = "The ArgTest function expected ";
       var numargs = arguments.length;     // 获取被传递参数的数值。
       var expargs = ArgTest.length;       // 获取期望参数的数值。
       if (expargs < 2)
            s += expargs + " argument. ";
       else
            s += expargs + " arguments. ";
       if (numargs < 2)
            s += numargs + " was passed.";
       else
            s += numargs + " were passed.";
         s += " "
       for (i =0 ; i < numargs; i++){      // 获取参数内容。
         s += "    Arg " + i + " = " + arguments[i] + " ";
         }
       return(s);                          // 返回参数列表。
    }
    

    2.caller
    返回一个对函数的引用,该函数调用了当前函数。
    functionName.caller
    functionName 对象是所执行函数的名称。
    对于函数来说,caller属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller包含的就是 null 。
    3.callee
    返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
    callee属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性。
    arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。

    function calleeDemo() {
          alert(arguments.callee);
    }
    //用于验证参数
    function calleeLengthDemo(arg1, arg2) {
        if (arguments.length==arguments.callee.length) {
              window.alert("验证形参和实参长度正确!");
            return;
          } else {
              alert("实参长度:" +arguments.length);
              alert("形参长度: " +arguments.callee.length);
          }
    }
    
  • 相关阅读:
    Eygle力荐:Oracle 19c升级文档、视频、问答集锦
    每日一题 2020.05.11
    “前浪”数据仓库和大数据平台,到“后浪”数据中台的演变史
    面向对象例子
    super()调用父类方法
    iOS视图控制器初始化问题
    详解EBS接口开发之更新供应商付款方法
    oracle对大对象类型操作:blob,clob,nclob
    "ORA-20100: 为 FND_FILE 创建文件 o0003167.tmp 失败"
    错误 frm-40654 记录已经被另一个用户更新,重新查询以查看修改
  • 原文地址:https://www.cnblogs.com/quan-quanquan/p/6689300.html
Copyright © 2020-2023  润新知