Bonjour, je voudrais savoir si il existe une fonction javaqscript qui permet d'aficher la structure d'un objet(membre, fonction, ect)
Version imprimable
Bonjour, je voudrais savoir si il existe une fonction javaqscript qui permet d'aficher la structure d'un objet(membre, fonction, ect)
Un truc vite fait :o Bien gras comme il faut pas !
Apr�s je pense que la reflection, ou introspection, n'existe pas en tant que tel en javascript, du moins pas comme dans un langage comme le c#.Code:
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <div id="yo"> </div> <div id="function" style="color:#CC6600"> </div> <br /> <br /> <div id="property" style="color:#990000"> </div> </body> <script type="text/javascript" language="javascript"> function yep ( ) { for( var prop in document.getElementById("yo") ) { try { document.getElementById("yo")[prop] = "r"; document.getElementById("function").innerHTML += prop+"<br/>"; } catch(Ex) { //alert(Ex); document.getElementById("property").innerHTML += prop+"<br/>"; } } } yep(); </script> </html>
Bye
Je voi que tu a lut dans mes pensser concernant l'exploration d'un objet dom :D
Sinon en fait je visait particuli�rement le var_dump du php :D
Et enfin, je pourais avoir plus d'information sur l'exeption Ex?
Je sens que le d�velopement d'un petit JVS comme selui si pourais �tre int�r�ssent pour �tudier des objets. A la dif�rence que plutot qu'un div, on utiliseras une variable String avec un contenu identer(Non non laisser moi coder sa sa m'occupera :D)
Ps: Les couleures que tu a choisi sont moches :P
si tu utilises ffx, tu as un inspecteur dom qui est tres utile ;)
sinon effectivement la seule solution c'est le for
C'est le mecanisme tr�s classique du try catch avec une exception non typ�.Citation:
Et enfin, je pourais avoir plus d'information sur l'exeption Ex?
En C# ou en php tu arait typ� ton exception
En JS le typage n'existe pas r�ellement (� part les types primitifs int string ect), donc tu donnes juste une variable qui contient le message d'erreur. La variable aurait pu s'appeler X, Y, ou Ex.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 try{ } .... // Php catch(Exception $Ex){ } // C#, de souvenir .. le Ns ne doit pas etre bon mais la syntaxe ne dois pas etre trop moche ! catch(System.IOException Ex) { }
Comme dans les langages cit�s plus haut les blocs peuvent �tre imbriqu�s les un dans les autres.
Je te le laisses avec plaisir ! Car m�me si c'est sympa le JS, je trouve qu'il manque r�ellement de structuration et ca devient vite le bordel.Citation:
Je sens que le d�velopement d'un petit JVS comme selui si pourais �tre int�r�ssent pour �tudier des objets. A la dif�rence que plutot qu'un div, on utiliseras une variable String avec un contenu identer(Non non laisser moi coder sa sa m'occupera )
Oui, je ne suis qu'un petit developpeur avec absolument aucune comp�tence graphique :)Citation:
Ps: Les couleures que tu a choisi sont moches
Et en plus une magnifique console de debugage JS et CSS.Citation:
si tu utilises ffx, tu as un inspecteur dom qui est tres utile
Firefox i love you :o
Bye
Ok merci bien ^^
Nb : J'ai jamais esseiller le C#, je suis rester au c++
Nb : Firefox must live, and IE must die!
(Waou c'est ma premi�re rime anglaise XD)
Edit : Bon j'ai scripter ceci :
Alors plusieures choses :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 function explode (Obj) { var ContentVar; var ContentFunc; for( var Member in Obj ) { try { //On tente de modifier le contenu, en suposant que c'est une variable Obj[Member] += ""; //Aucune ereur, donc on l'ajoute a la liste de membre. ContentVar += Member +"{<br/>"; ContentVar += explode (Member) + "}<br/>"; } catch(Ex) { //C'est une fonction ContentFunc += Member +"(?)<br/>"; } } return "<font color=\"#00FF00\">" + ContentVar + "</font>" + "<font color=\"#0000FF\">" + ContentFunc + "</font>"; }
-Coment sp�cifier que OBJ doit �tre une copie?
-Pourquoi ma fonction r�cursive ne s'ar�tte jamais O_O
Normalement elle devrais s'ar�ter quand on a plus de fonction/proprit�t�es dans un membre.
tu peux donner un exemple de valeur pour Obj?
parce que c'est assez flippant vu comme �a :mrgreen:
8O mw� c est strange ce truc, un ti conseil, utilise typeof qui peut peut etre t'aider a trouver le type d'un membre
et pour le membre d'un type, eh bien... euh, c'est pas du javascript;
:king:
Un exemple pour la value de obj : document ^^
En fait, j'ai l'impression que quand il arive sur un Undefined, il continu de boucler. En plus je me demende si utiliser les exeption pour faire sa c'est vraiment int�r�ssent.
C'est quoi typeof? Sa permet de savoir si le param�tre est un objet/ une fonction / une variable / undefined?
en fait, je me demande ce que tu cherches vraiment (comme v�rit�);
d�j�, Ffx et IE, pour ne citer qu'eux, ne consid�rent pas les objets dom de la m�me mani�re et le bouclage des propri�t�s donne des r�sultats peu fiables;
apr�s, veux-tu avoir la descendance d'un noeud? son nodeType/name? sa taille?
Je veut explorer un objet. Que ce soit un objet, dom, ou autre chose.
hum; vague-vague :?
for in te donnera les propri�t�s d'un objet ou les indices d�clar�s d'un tableau;
typeof te donnera le type approximatif de l'objet;
apr�s, isPrototypeOf, constructor, instanceof... peuvent avoir une certaine utilit� mais finalement pas tant que �a;
for in me donne aussi les fonctions.
Sinon, je voudrais savoir comment je peut dire a ma boucle de ne plus aller chercher dans les undefined.undefined.undefined.undefined.........
si ton objet est window, certes... ou encore si tu fais r�f�rence � une m�thode d'objet... tout cela sous Ffx;Code:for in me donne aussi les fonctions.
Apres les noms de m�thodes post�es par siddh et javatwister voila ce que cela donne.
Et c'est deja nettement plus propre
Bon apr�s il faudrait affiner la chose pour une presentation plus correctes avec peut plus d'informations ect...Code:
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
43
44
45
46
47
48
49
50
51
52 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <div id="test"> </div> Fonctions : <br /> <div id="methodes"> </div> <br /> <br /> Méthodes : <br /> <div id="propriete"> </div> <script language="javascript" type="text/javascript"> function test( Obj ) { for( var t in Obj ) { if( typeof(Obj[t]) == "function" ) { document.getElementById("methodes").innerHTML += typeof(Obj[t])+" :: "+t+"<br/>"; } else { document.getElementById("propriete").innerHTML += typeof(Obj[t])+" :: "+t+"<br/>"; if( typeof(Obj[t]) == "object" ) { //test ( Obj[t] ); Est une très mauvaise idée car le script s'emballe... Surement un problème de récursivite du à l'arboresence, cf parentNode nextSibling ect } } } } test( document.getElementById("test") ); </script> </body> </html>
Sur IE je ne peux pas le tester, il bug � mort.... IE, pas le script.
Mais de toutes facon javatwister semble dire que cela ne fonctionnerais pas sous IE :o
bye
Sous IE aussi ;)Citation:
Envoy� par siddh
:arrow: Internet Explorer Developer Toolbar
Y a t'il moyen de savoir si la variable est une r�f�rence ou l'objet r��le? (pour eviter le probl�me de r�cursivit�e infini)