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 :

récupérer le nom d'une classe javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut récupérer le nom d'une classe javascript
    bonjour,

    le contexte : je crée des classes (new xxxx()) que je stock dans un array,
    chaque classe stockée doit être unique, pour cela, j'aurais besoin de connaitre le nom de chaque classe pour la stocker en tant que clé.

    le but est de pouvoir récupérer une classe stockée par la suite avec une fonction du genre recupclasse(maclasse());

    mais je ne sais pas du tout comment faire ça en javascript....

    merci pour votre aide, j'ai essayé de chercher sur le net, mais le problème c'est que les résultats parlent des class de balise... rien à voir...

    accessoirement j'ai une variable publique (name) dans mes classes que t'utilise, mais bon, je ne trouve pas ça super...

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par dark poulpo Voir le message
    bonjour,

    le contexte : je crée des classes (new xxxx()) que je stock dans un array,
    chaque classe stockée doit être unique, pour cela, j'aurais besoin de connaitre le nom de chaque classe pour la stocker en tant que clé.

    le but est de pouvoir récupérer une classe stockée par la suite avec une fonction du genre recupclasse(maclasse());

    mais je ne sais pas du tout comment faire ça en javascript....

    merci pour votre aide, j'ai essayé de chercher sur le net, mais le problème c'est que les résultats parlent des class de balise... rien à voir...

    accessoirement j'ai une variable publique (name) dans mes classes que t'utilise, mais bon, je ne trouve pas ça super...
    il n'y a pas de classe en javascript
    et
    Citation Envoyé par dark poulpo Voir le message
    bonjour,

    le contexte : je crée des classes (new xxxx()) ...
    ceci crée un objet pas une classe. quant à xxxx c'est une fonction pas une classe

    si la question est de savoir quelles sont les fonctions définies le sujet a déjà été abordé il y a peu.

    A+jyt

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Même s'il n'y a pas de classes, à partir du moment où tu as créé un "schéma" à partir du quel tu fait des instances, on ne peut qu'appeler cela une classe.

    Même si on appelle cela un "prototype".

    Et malheureusement derrière on parle de classe une fois que tu l'as créé, et ce dans tous les frameworks c'est bien une classe que tu écris, et évidement des instances que tu fais de cette classe.

    Ca peut paraître stupide de raisonner avec des Classes dans un langage qui n'en est pas pourvu, mais le besoin s'en fait ressentir, notamment quand tu as besoin de faire faire une tache spécifique à une classe, dans un contexte précis, dans ce cas cas, tu fais une nouvelle classe qui hérite de celle-ci.

    J'ai une question, qui peut justement paraître conne, mais si JS n'a pas de classe, comme on le sait tous, comme on va appeler cela :
    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
     
    var Animal = function(options) {
        this.init(options);
    };
    Animal.prototype = {
       constructor : Animal.constructor,
       init : function(options) {
     
       },
     
        bruit : function() {
           alert(bruit)
        }
     
    }

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par arnogues Voir le message
    Même s'il n'y a pas de classes, à partir du moment où tu as créé un "schéma" à partir du quel tu fait des instances, on ne peut qu'appeler cela une classe.
    non justement ça ne s'appelle pas une classe
    ce n'est pas parce qu'à l'école on vous apprend la POO en se basant sur la POO à base de classe que programmer en objet nécessite des classes.

    la théorie des langages à objet est bien plus large que cela.
    Citation Envoyé par arnogues Voir le message
    Même si on appelle cela un "prototype".
    Et malheureusement derrière on parle de classe une fois que tu l'as créé, et ce dans tous les frameworks c'est bien une classe que tu écris, et évidement des instances que tu fais de cette classe.
    là encore non et re non.

    non tu ne fais pas de classe en définissant un prototype et non tu ne crée pas nécessairement d'instance pour faire un objet.

    la grande majorité des langage à base de classes ne connaissent pas la notion d'objet mais uniquement d'instance. Mais ce n'est pas le cas de tous les langage et javascript fait partis de ceux qui ne connaissent pas la notion de classe et connaissent la notion d'objet. en js on peut créer un objet sans définition prototype.
    Citation Envoyé par arnogues Voir le message
    Ca peut paraître stupide de raisonner avec des Classes dans un langage qui n'en est pas pourvu, mais le besoin s'en fait ressentir, notamment quand tu as besoin de faire faire une tache spécifique à une classe, dans un contexte précis, dans ce cas cas, tu fais une nouvelle classe qui hérite de celle-ci.
    là encore ce n'est pas nécessaire et oui c'est stupide. js connait la notion d'héritage bien plus riche que l'héritage de classe. c'est comme dire je connais le vélo alors pour organiser le fret en Europe on n'utilisera que le vélo. mieux vaut apprendre les capacité de js et le utiliser à bon escient que de le détourner pour essayer de reproduire d'autre langage.
    Citation Envoyé par arnogues Voir le message
    J'ai une question, qui peut justement paraître conne, mais si JS n'a pas de classe, comme on le sait tous, comme on va appeler cela :
    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
     
    var Animal = function(options) {
        this.init(options);
    };
    Animal.prototype = {
       constructor : Animal.constructor,
       init : function(options) {
     
       },
     
        bruit : function() {
           alert(bruit)
        }
     
    }
    ça s'appelle simplement un prototype tout simplement.

    A+JYT

  5. #5
    Membre confirmé
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    merci pour ta réponse, malheureusement, après avoir lu le topic indiqué, ça ne résout pas mon problème... je'ai besoin de connaitre le nom de la "fonction" (pas class) fournis en paramètre d'une fonction X

  6. #6
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par dark poulpo Voir le message
    merci pour ta réponse, malheureusement, après avoir lu le topic indiqué, ça ne résout pas mon problème... je'ai besoin de connaitre le nom de la "fonction" (pas class) fournis en paramètre d'une fonction X
    comme je l'ai dit le sujet à déjà été traité dans le forum

    une petite recherche sur comment lister les fonctions définies et tu auras ta réponse.

    A+JYT

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Citation Envoyé par dark poulpo Voir le message
    je crée des classes (new xxxx()) que je stock dans un array,
    chaque classe stockée doit être unique, pour cela, j'aurais besoin de connaitre le nom de chaque classe pour la stocker en tant que clé.

    le but est de pouvoir récupérer une classe stockée par la suite avec une fonction du genre recupclasse(maclasse());
    Sans vouloir intervenir dans le débat « classe / pas classe » (), j'ai juste envie de dire : l'idée de départ ne me paraît pas bonne. Dark Poulpo, je reprends tes propres termes, tu cherches à stocker des constructeurs (on va appeler ça comme ça), de manière unique, en les identifiants à l'aide de clés. Pourquoi ne pas utiliser un objet associatif ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var mesConstructeurs = {
       "C1": function C1( ... ){
          ...
       },
       "C2": function C2( ... ){
          ...
       },
       etc.
    };
    À l’utilisation, tu peux construire tes objets comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var monObjet1 = new mesConstructeurs.C1(...);
    // ou bien
    var monObjet1 = new mesConstructeurs["C1"](...);
    Et si tu en as vraiment besoin, tu peux récupérer dynamiquement le constructeur comme l'a indiqué Arnogues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function recupclasse( obj ) { return obj.constructor; }
    Ou bien le nom du constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function recupclasse( obj ) { return obj.constructor.name; }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre confirmé
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    en réponse à watilin :

    en fait je suis en train de traduire un code à moi que j'avais fais en c#.net sur le principe design entity - system pour un moteur 3d (à la base xna) que je veux faire en webgl pour plus de portabilité.

    (actuellement j'ai stocké une variable nom avec le nom du PROTOTYPE) pour l'utiliser comme clé

    j'ai cru voir quelque part un moyen de faire de l'héritage de prototype (comme un héritage de classe pour ma traduction de mon code) donc je n'aurais qu'a écraser ma variable publique par le nom du prototype hérité...

    le problème avec l'exemple que tu me donnes c'est que dans un exemple comme celui-ci

    prototype A -> constructor.name retourne "function", moi j'ai besoin d'avoir le mot A

    (j'ai essayé aussi avec constructor et ça me retourne "Function() { [native code] }")

    prototype B qui hérite de A -> besoin d'avoir le mot B

    ps : (je viens de lire un exemple sur le net, je vais réessayer avec ce que tu m'as dit pour constructor.name)

    et donc je vais stocker dans un même Array des object new A(), new B(), .... (qui sont unique, pas 2 fois A, ou B, ... dans l'array)

    mais pour retrouver l'objet A, B, je comptais donner en argument A, B, ...
    actuellement avec mon système (temporaire ou définitif si pas mieux), j'utilise donc cette variable nom ="A/B/C/..." stocké en publique dans chaque prototype

    je n'ai pas besoin d'expliquer pourquoi je dois faire des prototypes hérités car je pense que tout le monde connait l'utilité des classes hérités dans d'autres langages...

    maintenant si vous connaissez des moyens propres pour javascript d'obtenir les même résultats....

  9. #9
    Membre confirmé
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    c'est bon ça marche comme ça, merci à vous

  10. #10
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Tu as adopté quelle solution du coup ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  11. #11
    Membre confirmé
    Homme Profil pro
    médical
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : médical

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    bein en fait ça ne marche que à moitié...

    j'explique la logique de mon code (ne change pas car elle est propre à la logique de conception du moteur)

    pour faire simple dans la compréhension

    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
     
    // p_systems[parametre.constructor.name] = parametre; ( == p_systems["SystemBase"] = parametre; )
    engine.RegisterSystem(new SystemBase());
     
    // p_systems[parametre.constructor.name] = parametre; ( == p_systems["SystemUpdate"] = parametre; )
    engine.RegisterSystem(new SystemUpdate()); 
     
     
    // c'est ici que ça bloque
    var s = engine.GetSystem(SystemUpdate); 
    // return p_systems[parametre.constructor.name];
    /*
     sauf que parametre.constructor.name == "Function", moi j'aurais voulu "SystemUpdate"
    mais je ne veux pas mettre un string en paramètre ça fait moche
    et pour la personne qui dev c'est moyen vu que des éditeurs peuvent
    te proposer la liste des prototype, fonction... qui est plus pratique 
     
    */

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le nom d'une classe et d'une méthode
    Par hanubis37 dans le forum Langages
    Réponses: 2
    Dernier message: 21/11/2014, 11h50
  2. Réponses: 22
    Dernier message: 19/01/2011, 10h00
  3. Récupérer le nom d'une Sous-classe
    Par rambc dans le forum Général Python
    Réponses: 9
    Dernier message: 05/06/2009, 14h33
  4. récupérer le nom d'une image dans un javascript
    Par adoptioninternationa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/06/2008, 15h36
  5. [javascript]Récupérer le nom d'une image
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/10/2005, 13h56

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