在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;
}
如何处理堆栈跟踪中多次存在的函数?
答案 0 :(得分:5)
抱歉,但没有。一旦你在跟踪中点击了递归函数,就无法进入调用函数。
我花了几天的时间尝试解决这个问题,同时为Sun Microsystems编写一个IDE IDE。没有。