Nyl*_*ska 3 javascript callstack function
可能重复:
你如何在JavaScript中找到调用者函数?
如何在javascript函数中找到调用(调用堆栈中的前者)函数?
我想确定在onbeforeunload事件中前者被调用的函数是否是__doPostback.
Jam*_*are 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);
}
}
Run Code Online (Sandbox Code Playgroud)
该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);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,此代码正在访问当前函数,然后caller
在其上引用相同的非标准属性.这与直接使用不推荐使用的 arguments.caller
属性不同,后者在某些现代浏览器中未实现.