在javascript中确定调用函数

时间:2009-08-26 09:36:40

标签: javascript function callstack

  

可能重复:
  How do you find out the caller function in JavaScript?

如何在javascript函数中找到调用(调用堆栈中的前者)函数?

我想确定onbeforeunload事件中前者被调用的函数是否为__doPostback。

2 个答案:

答案 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为整个命名的匿名调用函数提供整个函数体作为字符串。