[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。但是遍历不到它任何属性,难道只是个{ }?那它是用来干什么用的呢?

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部