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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript] Méthode générée dynamiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Javascript] Méthode générée dynamiquement

n°2009761
Profil sup​primé
Posté le 18-07-2010 à 13:39:33  answer
 

Bonjour
 
Je suis entrain de lire un bouquin sur Javascript. Et comme d'hab dans ce genre de livre, le code source qu'il contient ne fonctionne pas....
Le code est le suivant:
 

Code :
  1. function User( properties ) {
  2. for ( var x in properties ) { (function(){
  3. // Create a new getter for the property
  4. this[ "get" + x ] = function() {
  5. return properties[x];
  6. };
  7. // Create a new setter for the property
  8. this[ "set" + x ] = function(val) {
  9. properties[x] = val;
  10. };
  11. })(); }
  12. }
  13. var user = new User({
  14. name: "Bob",
  15. age: 44
  16. });
  17. // Just note that the name property does not exist, as it's private
  18. // within the properties object
  19. alert( user.name == null );
  20. // However, we're able to access its value using the new getname()
  21. // method, that was dynamically generated
  22. alert( user.getname() == "Bob" );
  23. // Finally, we can see that it's possible to set and get the age using
  24. // the newly generated functions
  25. user.setage( 22 );
  26. alert( user.getage() == 22 );


 
En gros c'est tout con. Il crée des méthode, en l'occurrence des getter et setter de façon dynamique en fonction des propriétés de l'objet passées à sa création.
 
Alors ca ne marche pas parce qu'il ne reconnait pas la méthode "getname()" en ligne 23.
Logiquement je me suis dit c'est surement à cause de l'encapsulation dans une fonction anonyme (en rouge). Parce que si j'ai bien compris les fonctions anonymes sont là pour définir le scope des variables, en d'autre terme pour empêcher que les variables créées dans la fonction anonyme soient visibles de l'extérieur. Or comme c'est des fonctions dynamiques qu'on y crée il me semble normal qu'elles doivent être accessible de l'extérieur.
 
Mais voilà, si j'enlève la fonction anonyme ca marche mieux, sauf qu'un nouveau problème apparaît.
Les fonctions getter et setter existent, ce qui est une bonne chose. Le problème c'est que le "getname()" qui normalement devrait me donner la valeur "Bob" me renvoie "44", en d'autre terme la même valeur que pour l'âge.
 
Alors j'imagine que ca doit être un problème de référence mais je vois pas trop où.
 
Voilà si quelqu'un pourrait me montrer l'erreur ca serait sympa :D
 
Merci  :hello:


Message édité par Profil supprimé le 18-07-2010 à 13:42:28
mood
Publicité
Posté le 18-07-2010 à 13:39:33  profilanswer
 

n°2016877
Pascal le ​nain
Posté le 14-08-2010 à 02:06:21  profilanswer
 

essaie user['getname'] au lieu de user.getname


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

  [Javascript] Méthode générée dynamiquement

 

Sujets relatifs
Ajouter des cases dans un tableau en javascript[RESOLU] [javascript] recharger une fenetre (grand) parent
[RESOLU] Problème tableau php -> javascript[OpenGl] Choisir la bonne méthode d'affichage (Vertex Array ?)
Contruire sa constante à partir d'une constante sys dynamiquement[Annulé] Petit soucis avec mootabs, onglets javascript
POST et GET : est ce la bonne méthode ?Methode permettant de bien affiché un objet
problème javascriptJavascript et UTF-8, mauvais affichage
Plus de sujets relatifs à : [Javascript] Méthode générée dynamiquement


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