在 javascript 中,我可以使用 foo.caller 来获取对堆栈跟踪中 foo 上方函数的引用。但是,当一个函数在同一个堆栈跟踪中多次出现时,这不起作用,foo.caller 仅返回 foo。
是否有一种稳定的跨平台方法可以在 Javascript 中获取完整的堆栈跟踪?我不想想要获得可打印的堆栈跟踪;相反,我正在执行堆栈检查,以查看某个方法是否位于堆栈中我上方的任何位置。这是我当前的代码:
function inFunction(foo) {
var caller = inFunction.caller;
var maxDepth = 20;
while(caller && --maxDepth > 0) {
if(caller == foo)
return true;
caller = caller.caller;
}
return false;
}
有什么想法如何处理堆栈跟踪中多次存在的函数吗?
最佳答案
抱歉,没有。一旦在跟踪中遇到递归函数,就不可能到达调用函数。
在为 Sun Microsystems 使用 JavaScript 编写 IDE 时,我花了几天时间试图找到解决方法。没有。
关于javascript - 在递归代码中使用Javascript function.caller 进行堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383903/