Partage
  • Partager sur Facebook
  • Partager sur Twitter

calcule variable d'un objet, dans l'objet [novice]

Anonyme
    17 janvier 2019 à 11:43:42

    Bonjour,

    j'ai un objet Test

    var test = {
      un : 1,
      deux : 2,
      trois : this.un + this.deux,
    
      calcul : function calcul() {
        var a =  test.un + test.deux;
        return;
      },
      fTrois : this.calcul.a,
     
    };

    Je ne sais pas comment additionner 2 variables d'un objet dans l'objet directement.

    j'aimerais le faire aussi dans une fonction, pour faire plusieurs calcule et prendre les valeurs retournées et les mettres dans plusieurs variables :euh:

    C'est plus propre de le faire en dehors d'un objet ? 

    mercii

    -
    Edité par Anonyme 17 janvier 2019 à 11:45:38

    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2019 à 12:14:50

      Tu peux faire un truc comme ça : https://jsfiddle.net/9wk21rjt/

      Tu ne peux pas déclarer trois comme tu le fais, this ne fais pas référence à test (pareil pour fTrois).

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        17 janvier 2019 à 12:52:52

        merci,

        du coup tu as mis trois mais il sert a rien et ne renvois rien ?

        cela dit je trouve ça pas propre, une variable vide et 2 "méthodes" juste pour faire un calcule. non ? je devrais peut être faire ça en dehors de l'objet.

        En modifiant le code :

        var test = {
          un : 1,
          deux : 2,
          calcul : function calcul() {
            this.a =  this.un + this.deux;
            this.b = this.deux + this.trois;
          },
        
          trois : function() {
            this.calcul();
            return this.a;
          },
        
          quatre : function() {
            this.calcul();
            return this.b;
          }
        };
        console.log(test.trois());
        console.log(test.quatre());

        EDIT: Ca fonctionne nickel, mais juste pour essayer pourquoi je ne peux pas additionner la valeur trois ? elle n'est pas sauvegardé ?

        -
        Edité par Anonyme 17 janvier 2019 à 13:26:03

        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2019 à 14:12:57

          Exemple en ES6 (JavaScript moderne): ( https://jsfiddle.net/dcx7Lp3o/ )

          class TestClass {
            constructor(a, b) {
              this.a = a;
              this.b = b;
            }
            
            get sum() {
              return this.a + this.b;
            }
          }
          
          let obj = new TestClass(2, 4);
          console.log(obj.sum);



          Dans l'exemple, sum est une propriété "transient" dans le sens où elle n'existe pas vraiment. Mais en-dehors de la classe, grâce au getter écrit, on peut référencer obj.sum comme si la propriété existait bien (il n'y a pas de parenthèses, ce n'est pas un appel de fonction ligne 13), alors que ce n'est pas le cas.

          Si à partir de c tu sais ce que doivent valoir a et b, et que tu veux que quand on modifie c a et b soient mis à jour, alors il faut aussi définir un setter.

          C'est une manière simple d'avoir une valeur qui dépend d'autres et n'est qu'un résultat de calcul.

          -
          Edité par Genroa 17 janvier 2019 à 14:14:23

          • Partager sur Facebook
          • Partager sur Twitter
          /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
          Anonyme
            17 janvier 2019 à 15:44:54

            et dans ce get on peut retourner plusieurs valeur ? et des variables ?

            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2019 à 16:48:46

              Vu tes question, je crois que tu vas devoir revoir les bases de la programmation, dont la programmation orientée objet.

              Le getter est une fonction, il ne retourne qu'une seule valeur, comme dans la plupart des langages. La solution pourrait être de retourner une liste de valeurs, mais pour ce que tu demandes je ne vois pas l'intérêt?

              Pour le reste, ben...c'est une fonction classique. Donc on retourne ce qu'on veut.

              • Partager sur Facebook
              • Partager sur Twitter
              /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\

              calcule variable d'un objet, dans l'objet [novice]

              × 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