Zwei faule Lösungen
Es gibt hier bereits ausgezeichnete Antworten, und ich bin kein Experte auf diesem Gebiet, aber ich bin ein Experte darin, faul zu sein, und in meinen Augen scheinen diese Antworten nicht faul genug zu sein.
Erstens: Objekt aus anonymer Funktion zurückgeben
Eine sehr leichte Abweichung von T.J. Crowder , Henry Wrightson y Rafael Rocha Antworten:
var foo = (() => {
// Paste in your original object
const foo = {
a: 5,
b: 6,
};
// Use their properties
foo.c = foo.a + foo.b;
// Do whatever else you want
// Finally, return object
return foo;
})();
console.log(foo);
Der kleine Vorteil dabei ist, dass Sie Ihr ursprüngliches Objekt einfach so einfügen können, wie es war, ohne sich um Argumente usw. zu kümmern (IMHO wird die Wrapper-Funktion auf diese Weise ziemlich transparent).
Zweitens: Verwendung von setTimeout
Dies hier kann funktionieren, wenn Sie nicht brauchen foo.c
und zwar sofort:
var foo = {
a: 5,
b: 6,
c: setTimeout(() => foo.c = foo.a + foo.b, 0)
};
// Though, at first, foo.c will be the integer returned by setTimeout
console.log(foo);
// But if this isn't an issue, the value will be updated when time comes in the event loop
setTimeout( () => console.log(foo), 0);