首页 > 技术文章 > arguments对象的callee属性和caller属性

yaotome 原文

js中的arguments对象代表正在执行的函数和调用它的函数的参数。arguments对象有两个属性,callee和caller。collee表示当前正在执行的方法,caller表示调用该方法的对象,如果函数是顶层调用的,则caller值为null。这两个属性可以用在以下情形:

1、方法的链式调用

(function(o){
    alert(o);
    return arguments.callee;
})("第一次调用")("第二次调用")("第三次调用");

2、递归调用

var result = (function(n) {
                if (n <=1)
              return 1;
                 else
               return n + arguments.callee(n - 1);
              })(100);
alert(result);

3、获取方法信息

var func = function(){
      //打印方法体
      alert(arguments.callee);
      //打印方法名 func
      alert(arguments.callee.name);
      //打印调用方法体
      alert(arguments.callee.caller);
      //打印调用方法名 callfunc
       alert(arguments.callee.caller.name);
};

function callfunc(){
       func();
}

callfunc();

点击查看运行效果

推荐阅读