/ / Trace de trace utilisant Javascript function.caller en code récursif? - javascript, trace de pile

Pile trace en utilisant la fonction Javascript.caller dans le code récursif? - javascript, stack-trace

En javascript, je peux utiliser foo.appelant pour obtenir une référence à la fonction ci-dessus foo dans la trace de la pile. Cependant, cela ne fonctionne pas lorsqu'une fonction apparaît plusieurs fois dans la même trace de pile, foo.caller renvoie simplement foo.

Existe-t-il une méthode stable et multiplate-forme permettant d’obtenir une trace de pile complète en Javascript? je ne pas voulez obtenir une trace de pile imprimable; Je fais plutôt une inspection de pile pour voir si une certaine méthode est située au-dessus de moi dans la pile. Voici mon code actuel:

function inFunction(foo) {
var caller = inFunction.caller;
var maxDepth = 20;
while(caller && --maxDepth > 0) {
if(caller == foo)
return true;
caller = caller.caller;
}
return false;
}

Des idées sur la façon de traiter une fonction existante plusieurs fois dans la trace de pile?

Réponses:

5 pour la réponse № 1

Désolé, il n'y en a pas. Une fois que vous avez sélectionné une fonction récursive dans la trace, il est impossible d'accéder à la fonction d'appel.

J'ai passé plusieurs jours à essayer de trouver une solution à ce problème tout en écrivant un IDE en JavaScript pour Sun Microsystems. Il n'y en a pas.