Deep cloning means nested fields and subfields in an object are given new memory rather than referenced to an old memory.
const original = { a: 1, b: { c: 2, d: { e: 3 } }, }; const clone = JSON.parse(JSON.stringify(original)); clone.b.d.e = 4; original.b.d.e === clone.b.d.e // false
JSON
approach only works for JSON-compatible data types (e.g., no functions
, undefined
, Map
, Set
, or Date
).
Shallow clone references the same memory address of nested objects.
address
is a nested property in an object, shallowClone.address
and original.address
point to the same memory.shallowClone.address
will affect original.address
.shallow cloning only applies to nested array/objects
const original = { name: "Alice", age: 25, address: { city: "New York", zip: "10001" } }; // Shallow cloning with spread operator const shallowClone = { ...original }; shallowClone === original // false shallowClone.address === original.address // true