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 éclairé
    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
    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)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  2. #2
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    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 éclairé
    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
    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
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    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 Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    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 éclairé
    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
    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.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    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 : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    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 684
    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 684
    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 : 49

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

  11. #11
    Membre éclairé
    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
    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?
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    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 éclairé
    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
    Par défaut
    Je veut explorer un objet. Que ce soit un objet, dom, ou autre chose.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    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 éclairé
    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
    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.........
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    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 684
    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 Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    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 confirmé 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
    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 éclairé
    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
    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)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

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