Objects map string (or symbol) keys to values. Dot access is for known names, bracket access for dynamic ones. Spread copies own enumerable properties one level deep.
const tx = { to: "0xabc", value: 1n };
const { to, value } = tx;
const next = { ...tx, value: 2n };
tx["to"];Spread is a shallow copy: nested objects are still shared references.