/ / Stack Track, използвайки Javascript function.caller в рекурсивен код? - javascript, stack-trace

Стъпка с помощта на Javascript function.caller в рекурсивния код? - javascript, стека-следа

В javascript мога да използвам foo.обаждащ се, за да получи препратка към функцията над 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;
}

Някакви идеи как да се справим с функция, съществуваща няколко пъти в следата на стека?

Отговори:

5 за отговор № 1

За съжаление, но няма. След като натиснете рекурсивна функция в следата, е невъзможно да стигнете до функцията за повикване.

Прекарах няколко дни, опитвайки се да намеря задачи за това, докато писах IDE в JavaScript за Sun Microsystems. Няма никакви.