J'ai �crit une petite fonction introspective, un peu pour d�bugger, mais surtout pour m'exercer et par curiosit�
Elle affiche dans un simple alert la liste des param�tres pass�s � la fonction o� est plac� l'appel, ainsi que l'arbre des appels (callstack, pile d'appels, appelez �a comme vous voulez ^^).
Jusque l�, rien de tr�s original, mystique ou bizarre.
Pour l'utiliser il suffit de placer dans une fonction quelconque l'appel suivant :
Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 // affichage de tous les paramètres passés à la fonction ( pour debuggage ) function all(arg) { var mess = "------------------------------------------\n"; mess += "Liste des arguments passés à\nla fonction " + arguments.callee.caller.name + " :\n"; mess += "(sur " + arguments.callee.caller.length + " attendus)\n\n"; for (var i = 0 ; i < arg.length ; i++) { mess += "argument numero " + (i + 1) + " : " + arg[i] + "\n"; } mess = calltree() + "\n" + mess + "\n------------------------------------------\n"; alert(mess); } function calltree() { var mess = "------------------------------------------\n"; mess += "Arbre d'appels :\n\n"; if (document.all) return mess + "(indisponible pour IE)"; var root = arguments.callee.caller.caller; var t = new Array(); while (root) { t.push(root.name); root = root.caller; } for (var i = (t.length - 1); i >= 0; i--) { for (var ii = 0; ii < ((t.length - 1) - i); ii++) { mess += " "; } mess += "appel n°" + ((t.length) - i); if (i == (t.length - 1)) mess += " (racine)"; mess += " : " + t[i] + "\n"; } return mess; }
Je l'ai test�e : elle marche tr�s bien. (edit : petit oubli : pas compl�tement sous IE pour le moment
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 all(arguments);)
Par contre, je voudrais y ajouter une am�lioration sans y parvenir pour le moment :
---> voir ma question du titre : "Est-il possible de r�cup�rer les arguments muets d'une fonction ?"
Ce que je voudrais, c'est acc�der aux identificateurs utilis�s pour nommer les arguments dans la signature de la fonction.
Exemple, dans ce bout de code imaginaire :
Je sais r�cup�rer le nom de la fonction, � savoir la cha�ne "afficher", mais comment r�cup�rer les chaines "nom", et "score" (attention nous sommes bien d'accord : je ne parle pas du nom "bebert" et du score "122" qui sont les valeurs pass�es ponctuellement � tel appel...)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 function afficher(nom, score) { // ... }
Si quelqu'un a un d�but de piste, une id�e g�niale ou autre...
...en tout cas merci de m'avoir lu jusque ici ^^
Partager