3

可能重复:
你如何找出 JavaScript 中的调用者函数?

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

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

4

2 回答 2

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。

如果您使用的是匿名函数,您仍然可以caller通过该属性访问该arguments.calee属性:

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的属性不同,后者在某些现代浏览器中未实现。

于 2009-08-26T09:39:44.693 回答
0

在 cr-48 上的 chromeos 中,arguments.callee.caller 将整个函数体作为字符串提供,用于两个命名的匿名调用者函数。

于 2011-08-14T19:42:57.043 回答