Return a new object with one field changed.

update-object Object spread can copy old fields and override one field. The replacement field appears later in the literal.

Updating Objects

stock
update_object.js
Replay: real traced execution (multi-file project)
const stock = 5;
const updated = JSON.stringify({
  ...{ item: "pen", stock: 2 },
  stock: stock,
});
const available = stock > 0;

console.log("updated=" + updated);
console.log("available=" + available);
const stock = 0;
const updated = JSON.stringify({
  ...{ item: "pen", stock: 2 },
  stock: stock,
});
const available = stock > 0;

console.log("updated=" + updated);
console.log("available=" + available);
const stock = 12;
const updated = JSON.stringify({
  ...{ item: "pen", stock: 2 },
  stock: stock,
});
const available = stock > 0;

console.log("updated=" + updated);
console.log("available=" + available);
  1. stock ← 5, updated ← {"item":"pen","stock":5}, available ← true

    1const stock→ 5 = 5; //@stock=0, 122const updated→ {"item":"pen","stock":5} = JSON.stringify({3  ...{ item: "pen", stock: 2 },4  stock: stock5,5});6const available→ true = stock→ 5 > 0;78console.log("updated=" + updated{"item":"pen","stock":5});9console.log("available=" + availabletrue);
    outputupdated={"item":"pen","stock":5}
    available=true
  1. stock ← 0, updated ← {"item":"pen","stock":0}, available ← false

    1const stock→ 0 = 0;2const updated→ {"item":"pen","stock":0} = JSON.stringify({3  ...{ item: "pen", stock: 2 },4  stock: stock0,5});6const available→ false = stock→ 0 > 0;78console.log("updated=" + updated{"item":"pen","stock":0});9console.log("available=" + availablefalse);
    outputupdated={"item":"pen","stock":0}
    available=false
  1. stock ← 12, updated ← {"item":"pen","stock":12}, available ← true

    1const stock→ 12 = 12;2const updated→ {"item":"pen","stock":12} = JSON.stringify({3  ...{ item: "pen", stock: 2 },4  stock: stock12,5});6const available→ true = stock→ 12 > 0;78console.log("updated=" + updated{"item":"pen","stock":12});9console.log("available=" + availabletrue);
    outputupdated={"item":"pen","stock":12}
    available=true