IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Structures des objets.


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut Structures des objets.
    Bonjour, je voudrais savoir si il existe une fonction javaqscript qui permet d'aficher la structure d'un objet(membre, fonction, ect)

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Un truc vite fait :o Bien gras comme il faut pas !

    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>
    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#.

    Bye

  3. #3
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    si tu utilises ffx, tu as un inspecteur dom qui est tres utile

    sinon effectivement la seule solution c'est le for

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Et enfin, je pourais avoir plus d'information sur l'exeption Ex?
    C'est le mecanisme très classique du try catch avec une exception non typé.

    En C# ou en php tu arait typé ton exception
    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)
    {
     
    }
    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.
    Comme dans les langages cités plus haut les blocs peuvent être imbriqués les un dans les autres.


    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 )
    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.


    Ps: Les couleures que tu a choisi sont moches
    Oui, je ne suis qu'un petit developpeur avec absolument aucune compétence graphique

    si tu utilises ffx, tu as un inspecteur dom qui est tres utile
    Et en plus une magnifique console de debugage JS et CSS.
    Firefox i love you :o

    Bye

  6. #6
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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 :
    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>";
    }
    Alors plusieures choses :
    -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.

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tu peux donner un exemple de valeur pour Obj?
    parce que c'est assez flippant vu comme ça

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    mwé c est strange ce truc, un ti conseil, utilise typeof qui peut peut etre t'aider a trouver le type d'un membre

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    et pour le membre d'un type, eh bien... euh, c'est pas du javascript;

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut

  11. #11
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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?

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    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?

  13. #13
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Je veut explorer un objet. Que ce soit un objet, dom, ou autre chose.

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    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;

  15. #15
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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.........

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for in me donne aussi les fonctions.
    si ton objet est window, certes... ou encore si tu fais référence à une méthode d'objet... tout cela sous Ffx;

  17. #17
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Apres les noms de méthodes postées par siddh et javatwister voila ce que cela donne.

    Et c'est deja nettement plus propre

    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">
    &nbsp;
    </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>
    Bon après il faudrait affiner la chose pour une presentation plus correctes avec peut plus d'informations ect...

    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

  18. #18
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par siddh
    si tu utilises ffx, tu as un inspecteur dom qui est tres utile
    Sous IE aussi
    Internet Explorer Developer Toolbar

  19. #19
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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)

Discussions similaires

  1. [Conception] Structures partagées par des objets
    Par jblecanard dans le forum C++
    Réponses: 14
    Dernier message: 14/03/2013, 11h00
  2. des objets dans des structures
    Par dhbmedanis dans le forum Débuter
    Réponses: 9
    Dernier message: 25/05/2012, 16h56
  3. By val et By ref appliquées à des objets de types structurés
    Par new_wave dans le forum Framework .NET
    Réponses: 3
    Dernier message: 02/06/2009, 10h40
  4. Réponses: 7
    Dernier message: 13/03/2008, 14h59
  5. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo