53 votes

Comment référencer les propriétés d'un même objet lors de sa création ?

J'essaie de faire quelque chose comme

o = {
  a: { foo: 42 },
  b: o.a
}

Mais cela renvoie une erreur disant que o n'est pas défini. Je sais que je peux plus tard faire o.b = o.a. Mais je me demande s'il est possible de définir b pendant que je suis dans la définition o.

66voto

ignarukih Points 479

C'est juste l'histoire ancienne maintenant, mais je viens d'apprendre sur getters et setters, qui sont parfaits pour votre situation, et je suis sûr que les gens qui regardent cette question pourraient en tirer une certaine valeur..

o = {
  a: { foo: 42 },
  get b() {
    return this.a
    }
  }

console.log(o.b) // => { foo: 42 }

56voto

Matt Ball Points 165937

Comme @ RobGl'a commenté — non, vous ne pouvez pas.

Vous pouvez cependant utiliser le mot-clé this l'intérieur des fonctions définies comme propriétés de l'objet, comme ceci :

o = {
  a: { foo: 42 },
  b: function () {
      return this.a;
  }
}

console.log(o.b()); // {foo: 42};

4voto

Hello71 Points 545
o = {};
o.a = {foo: 42};
o.b = o.a;

1voto

Jaime Points 5148

Encore une autre façon de le faire :

(function() {
    var some = { foo: 42 };
    window.o = {
        a: some,
        b: some
    };
})();

alert(o.b.foo);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X