JavaScript

javascript中callee与caller的区别

时间:2024-07-31 11:07:46 JavaScript 我要投稿
  • 相关推荐

javascript中callee与caller的区别

  callee

  callee是对象的一个属性,该属性是一个指针,指向参数arguments对象的函数

  首先我们来写个阶成函数:

  function chen(x){if (x<=1) {return 1;} else{return x*chen(x-1);};};

  从这个函数中可以看出来,用到了递归函数,要是改变了函数名,里面的函数名也要随着改变,这样很不方便所以我们用callee来试试

  function chen(x){if (x<=1) {return 1;}else{return x*arguments.callee(x-1);};};

  我们来分析一下为什么这样写:根据callee的定义,可以看出来callee是arguments对象的一个属性,指向arguments对象的函数,这个函数就是chen(chen=arguments.callee),这样解释应该可以理解了吧。

  caller

  caller是函数对象的一个属性,该属性保存着调用当前函数的函数的引用(指向当前函数的直接父函数)

  先来个例子吧

  function a(){b();};function b(){alert(b.caller);};a(); //结果就是弹出函数a和内容

  我们来解释一下吧,首先函数b的属性caller调用当前函数b的函数引用a(就是指向当前函数b的父函数a),所以结果就是弹出 function a(){ b();};

  那么了解了caller和callee,那么可以不可以将二者结合在一起来使用呢

  function b(){alert(b.caller);};

  从这个代码可以看出b函数中调用了b函数名,这样当函数名改变时就很不方便,我们需要替换里面的那个b

  前面我们知道用什么方法可以指向当前对象,下面我们就来修改一下:

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

  从代码中可以看出我们用arguments.callee代替了b函数,所以解决了一下麻烦。。。。。

  以上所述就是本文的全部内容了,希望大家能够喜欢。

【javascript中callee与caller的区别】相关文章:

如何调试javascript脚本呢07-19

javascript跨域访问的方法07-19

CFR与CIF的含义与区别01-14

戏剧和话剧的区别12-20

打工和创业的区别02-13

新闻写作与公文写作的区别01-10

托福和gre、雅思的区别07-24

销售管理与营销管理的区别01-25

潜水服与冲浪服的区别03-15

拳击、自由搏击与MMA的区别07-25