javascript中callee与caller的区别分析_javascript技巧
程序员文章站
2022-04-26 08:19:16
...
callee
callee是对象的一个属性,该属性是一个指针,指向参数arguments对象的函数
首先我们来写个阶成函数:
function chen(x){ if (x
从这个函数中可以看出来,用到了递归函数,要是改变了函数名,里面的函数名也要随着改变,这样很不方便所以我们用callee来试试
function chen(x){ if (x
我们来分析一下为什么这样写:根据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中toLocaleString()和toString()的区别实例分析
-
Java与JavaScript中判断两字符串是否相等的区别
-
JavaScript ES6中的简写语法总结与使用技巧
-
JavaScript中click和onclick本质区别与用法分析
-
javascript与jquery中跳出循环的区别总结
-
ES6 javascript中class类的get与set用法实例分析
-
JavaScript中undefined与null的区别
-
JavaScript直接调用函数与call调用的区别实例分析
-
JavaScript中Element与Node的区别,children与childNodes的区别【转】
-
解析JavaScript中 querySelector 与 getElementById 方法的区别