如何在 javascript 函数中找出调用(调用堆栈中的前者)函数?
我想确定之前调用的函数是否是 onbeforeunload 事件中的 __doPostback 。
如何在 javascript 函数中找出调用(调用堆栈中的前者)函数?
我想确定之前调用的函数是否是 onbeforeunload 事件中的 __doPostback 。
每个函数都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
的属性不同,后者在某些现代浏览器中未实现。
在 cr-48 上的 chromeos 中,arguments.callee.caller 将整个函数体作为字符串提供,用于两个命名的匿名调用者函数。