Deep clone object with structuredClone()

structuredClone() is a native API in JavaScript that can do deep cloning of objects:


const original = {
  name: "Peter",
  properties: {
    age: new Date()
  }
};

const copy = structuredClone(original);

copy.properties.action = "Jump";
original.properties.action; // undefined

It can handle circular references and other JS built-in types such as Date, Set, Map.

Learn more on MDN.

What about object spread?

The object spread operator actually does a shallow copy. If you modify a deeply nested property, both objects are affected:

const original = {
  name: "Peter",
  properties: {
    age: new Date()
  }
};

const copy = { ...original };

copy.properties.action = "Jump";
original.properties.action; // "Jump"