Partage
  • Partager sur Facebook
  • Partager sur Twitter

Executer une fonction dans un objet de manière dyn

    12 décembre 2018 à 23:12:29

    Salut,

    Sans dire que je débute, je suis pas un as non plus en javascript tant je le pratique trop peu.

    Je suis en train d'organiser mon code pour une sorte de petit routeur dans un single page et là j'arrive au moment ou j'aimerais pouvoir dire à mon code d’exécuter tel action de tel module en fonction de mes variables action et mocule. Cependant j'aimerais le faire de manière dynamique, non pas avec de simple condition (si module = unModule => fais ceci). J'ai bien compris le coup du window[variable] ou dans un objet js this[variable] mais si je veux par exemple executer une fonction dans un objet alors la j'arrive pas du tout à imaginer la semantique :

    var _Action_ = function(){
      this.module = 'chanter';
      this.action = 'fort';
     
      this.executer = function(){
     
       this.chanter = {
         fort : function(){
          alert('Je chante fort');
         },
         doucement : function(){
          alert('Je chante doucement');
         }
       };
        
       /* ici j'aimerais executer ma fonction du style :*/
       this[module].this[action]();
       /* Mais je me rend bien compte que ça va pas le faire*/
     };
    };



    Merci par avance.

    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2018 à 23:35:48

      Salut,

      je crois que tu dois créer un objet comme ça :

      var Routeur = {
          url: null,
          
          redirection: function() {
              console.log("Redirection vers " + this.url);
          }
      }




      Dans le code que tu as présenter, ta variable _Action_ est une fonction.
      Tu ne peux pas utiliser this dans ce cas.

      -
      Edité par Chikuma Koshiro 12 décembre 2018 à 23:38:25

      • Partager sur Facebook
      • Partager sur Twitter

      Executer une fonction dans un objet de manière dyn

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown