可能重复:
How do you find out the caller function in JavaScript?
如何在javascript函数中找到调用(调用堆栈中的前者)函数?
我想确定onbeforeunload事件中前者被调用的函数是否为__doPostback。
答案 0 :(得分:15)
每个函数都定义了caller
属性。
来自https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/caller:
function myFunc() {
if (myFunc.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + myFunc.caller);
}
}
Function.caller
属性不是ECMA3标准的一部分,但它已在所有主流浏览器中实施,包括IE和Firefox。
如果您使用的是匿名函数,您仍然可以通过arguments.calee
属性访问caller
属性:
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}
请注意,此代码正在访问当前函数,然后在其上引用相同的非标准caller
属性。这与直接使用已弃用的 arguments.caller
属性不同,在某些现代浏览器中未实现。
答案 1 :(得分:0)
在cr-48上的chromeos中,arguments.callee.caller为整个命名的匿名调用函数提供整个函数体作为字符串。