[Javascript] arguments.callee.caller(如何知道到函数被谁调用了)

[Javascript] arguments.callee.caller(如何知道到函数被谁调用了)
有人曾问过我,在JavaScript中是否有办法得到函数调用者的信息,就是说要知道调用某个函数的函数。当时我想既然在函数内部有arguments.callee,那么是否有arguments.caller呢?可惜的是当我在Firefox中试验时,这个值始终是undefined。另外,我发现ActionScript 3.0之前的版本有arguments.caller,但是在3.0中被拿掉了。我更加肯定地认为JavaScript中也不会有这个东西,于是告诉他:没办法。

最近偶然看到一篇文章,发现真正的caller属性长在function上,而不是arguments上。所以在函数内部可通过函数名.caller或者arguments.callee.caller取到调用者的信息。不过当函数在全局环境下调用时这个值是null。

比如:

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

function b(){
a();
}

b();

当我们在浏览器中执行这段代码时,可以看到结果:





这样我们就知道是b函数调用了a函数。

最后再说一个IE下奇怪的发现。在IE中,arguments.caller并不是undefined,也不是function,而是个object。但是遍历不到它任何属性,难道只是个{ }?那它是用来干什么用的呢?

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    联想垫a2207如何调用a2207平板评价

    联想垫a2207如何调用a2207平板评价,,联想a2207垫在1600 3G双网双待平板电脑的位置。作为以前的热门产品a2107升级版,a2207处理器取得了可观

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    尼康的小三元镜头指的是什么

    尼康的小三元镜头指的是什么,尼康,镜头,尼康的小三元镜头指的是什么尼康的小三元镜头指的是什么?从你的介绍中可以看出,你是相当喜欢摄影的

    移动云金蝶云会计|云会计的是什么?

    移动云金蝶云会计|云会计的是什么?,,1.云会计的是什么?会计云计算 (Cloud Accounting) 就是在线会计软件 (Online Accounting Software),区别于