Bonjour, je voudrais savoir si il existe une fonction javaqscript qui permet d'aficher la structure d'un objet(membre, fonction, ect)
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 : 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 <!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
Sinon en fait je visait particulièrement le var_dump du php
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)
Ps: Les couleures que tu a choisi sont moches![]()
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é.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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.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 graphiquePs: Les couleures que tu a choisi sont moches
Et en plus une magnifique console de debugage JS et CSS.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 : 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 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![]()
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;
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : 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
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 aussiEnvoyé par siddh
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)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager