在递归代码中使用Javascript function.caller进行堆栈跟踪?

Ben*_*lts 2 javascript stack-trace

在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;
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何处理堆栈跟踪中多次存在的函数?

Mar*_*ahn 5

对不起,但没有.一旦你在跟踪中点击递归函数,就不可能进入调用函数.

我花了几天的时间尝试解决这个问题,同时为Sun Microsystems编写一个IDE IDE.没有了.