В 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. Няма никакви.