首页 > 其他 > 详细

caller和callee的区别

时间:2015-07-21 16:52:37      阅读:219      评论:0      收藏:0      [点我收藏+]
①、caller
    caller返回一个函数的引用,这个函数调用了当前的函数。
    使用这个属性要注意:
    1 这个属性只有当函数在执行时才有用
    2 如果在javascript程序中,函数是由顶层调用的,则返回null

    functionName.caller: functionName是当前正在执行的函数。
     例子1: 复制代码 代码如下:
    
       var a = function() { 
            alert(a.caller); 
          } 
    var b = function() { 
              a(); 
          } 
          b();
          上面的代码中,b调用了a,那么a.caller返回的是b的引用,结果如下: 
                技术分享
           例子2:返回NULL  
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            var a = function(){
                alert(a.caller);
            }
            a();
        </script>
    </head>
    <body>
    </body>
</html>

②、callee

  callee返回正在执行的函数本身的引用,它是arguments的一个属性
  使用callee时要注意:
    1 这个属性只有在函数执行时才有效
    2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较arguments.length是否等于arguments.callee.length
    3 它可以用来递归匿名函数。

           例子1:返回函数本身的引用

    var a = function() {
          alert(arguments.callee);
        }
    var b = function() {
          a();
        }
        b();

           a在b中被调用,但是它返回了a本身的引用,结果如下:

    技术分享

    例子2:获取函数的形参

                技术分享
 
总结:caller是返回调用该函数的引用
         callee是返回本身自己的函数
          

caller和callee的区别

原文:http://www.cnblogs.com/rookieCat/p/4664809.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!