À l'évidence, la réponse simple est manquant, donc pour l'exhaustivité:
Mais est - il possible d'avoir des valeurs dans un objet littéral propriétés dépendent d'autres propriétés déclaré plus tôt?
Pas de. Toutes les solutions ici la reporter jusqu'à après la création de l'objet (de diverses manières) et ensuite affecter la troisième propriété. La plus simple façon est de simplement faire ceci:
var foo = {
a: 5,
b: 6
};
foo.c = foo.a + foo.b;
Tous les autres sont un peu plus indirecte façons de faire la même chose. (Felix est particulièrement habile, mais nécessite la création et la destruction d'un temporaire de fonction, en ajoutant de la complexité; et soit des feuilles supplémentaires de la propriété sur l'objet ou [si vous delete
cette propriété] une incidence sur les performances de la suite accès à la propriété sur cet objet.)
Si vous en avez besoin pour tous dans une expression, vous pouvez le faire sans le temporaire de la propriété:
var foo = function() {
var o = {
a: 5,
b: 6
};
o.c = o.a + o.b;
return o;
}();
Ou bien, si vous avez besoin de faire plus d'une fois:
function buildFoo(a, b) {
var o = {a: a, b: b};
o.c = o.a + o.b;
return o;
}
alors où vous en avez besoin pour l'utiliser:
var foo = buildFoo(5, 6);