Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1720 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JavaScript] Récupérer les attributs d'une classe ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JavaScript] Récupérer les attributs d'une classe ?

n°1362441
ham_mer
Posté le 09-05-2006 à 15:01:06  profilanswer
 

Bonjour,
Voila je voulais savoir si il était possible de récupérer les attributs d'une classe en javascript par une méthode ou une fonction, en fait je travaill sur le frameWork DOJO et j'aimerais pouvoir récupérer les attributs des widgets qui forment ce framework.
Meric  :)

mood
Publicité
Posté le 09-05-2006 à 15:01:06  profilanswer
 

n°1362593
ham_mer
Posté le 09-05-2006 à 16:58:36  profilanswer
 

Mince apparemen ça n'existe pas ? :s

n°1362618
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 17:25:14  profilanswer
 

bin surtout des questions aussi spécifiques sur DOJO devraient être posées sur le forum [:mlc]

n°1362635
ham_mer
Posté le 09-05-2006 à 17:39:27  profilanswer
 

ce n'est pas que pour DOJO je pensais a une quelque chose qui marcherait pour n'importe quel classe écrite en JS...

n°1362667
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 18:00:11  profilanswer
 

Bin l'objet en js ça suxxe à mort :o ( et non je m'emporte pas, qu'on me montre un heritage propre en js ...).
Par contre tout les objets se comportent "en gros" comme des tableaux.
Du coup tu peux faire un  

Code :
  1. for( i in tonObj)


ça marchera mais ça t'affiche aussi le nom des méthodes!!!
 
Exemple:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8.   function Obj(truc){
  9.       this.attr1 = truc;
  10.       this.attr2 = 'pouet';
  11.       this.attr3 = 'niout';
  12.   }
  13.   Obj.prototype.describe = function(){
  14.       alert(this.attr1)
  15.   }
  16.   function DescObj(){
  17.     var test = new Obj();
  18.     for(var i in test){
  19.       alert(i);
  20.     }
  21.   }
  22.   </script>
  23. </head>
  24. <body>
  25.   <input type="button" onclick="DescObj()" value="test"/>
  26. </body>
  27. </html>


Message édité par anapajari le 09-05-2006 à 18:00:37
n°1362672
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2006 à 18:03:18  profilanswer
 

ah et j'oubliais si jamais il te prennait l'excellente idée de faire un typeof(i) pour savoir si c'est une méthode ou un attribut tu constaterais rapidement que ça marcherait pas... Le typeof te retourne string dans le cas d'une méthode!

n°1362687
ham_mer
Posté le 09-05-2006 à 18:22:00  profilanswer
 

OK merci j'ai fait ça :
 

Code :
  1. //propriétés de l'objet graphique      
  2.    var fpWidgetProps = {};
  3.    //instanciation de l'objet par son "consctructeur"
  4.    var widgetIns = dojo.widget.createWidget('FloatingPane', fpWidgetProps);
  5.        
  6.           for(var i in widgetIns)
  7.           {
  8.     document.getElementById('ecrire').innerHTML = document.getElementById('ecrire').innerHTML+ i +"<br>";
  9.       }


 
Par contre tout ce que je récupère est de type String...
 

n°1363235
ham_mer
Posté le 10-05-2006 à 13:36:21  profilanswer
 

J'ai beau essayer je n'arrive pas a repérer si c'est une fonction ou attribut...
J'essaye ac eval des choses du genre : eval(widgetIns+'.i') mais je galère.

n°1363251
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-05-2006 à 13:46:27  profilanswer
 

je sais pas comment est fait l'oo dans DOJO mais si ils utilisent prototype ( comme dans l'exemple que je t'ai donné plus haut) tu peux récuperer toutes les méthodes publiques via taClasse.prototype:

Code :
  1. for(var in in taClasse.prototype){
  2. }


Biensur c'est pas parfait vu qu'il reste les méthodes privées mais c'est déjà ça!

n°1363255
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-05-2006 à 13:49:07  profilanswer
 

Quoi qu'en fait après reflexion tu dois même pouvoir t'en sortir avec un eval :)
Un truc du genre:

Code :
  1. var test = new Obj();
  2. for(var i in test){
  3.   alert(i+"--"+typeof(eval('test.'+i)));
  4. }

mood
Publicité
Posté le 10-05-2006 à 13:49:07  profilanswer
 

n°1363259
ham_mer
Posté le 10-05-2006 à 13:53:13  profilanswer
 

en fait j'ai testé ça :
 

Code :
  1. if(typeof(widgetIns[i])!= 'function')
  2. document.getElementById('ecrire').innerHTML = document.getElementById('ecrire').innerHTML+ i +":"+ typeof (widgetIns[i])+" <br>\n";


 
 
Et ça marche bien, merci à tous :)


Message édité par ham_mer le 10-05-2006 à 13:53:59

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JavaScript] Récupérer les attributs d'une classe ?

 

Sujets relatifs
recupérer la date d'hierPosition du menu en javascript
Cookie en javascriptbbcode et javascript -> un petit script avec un petit bug ... mais où?
[javascript] Settimeout question[JS] Recuperer un indice d'un element ?
Gettext Poker - Récupérer le texte d'un "controle" d'une autre fenetreDelais d'action d'un 'setVariable' de Javascript vers Flash
Récuperer une ligne d'un fichier texte dans une variable[Problème] Javascript et script SH
Plus de sujets relatifs à : [JavaScript] Récupérer les attributs d'une classe ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR