[JavaScript] clone

JSON.parse(JSON.stringify(originObject))

const kitchenSink = {
set: new Set([1, 3, 3]),
map: new Map([[1, 2]]),
regex: /foo/,
deep: { array: [ new File(someBlobData, 'file.txt') ] },
error: new Error('Hello!')
}

const veryProblematicCopy = JSON.parse(JSON.stringify(kitchenSink))

{
"set": {},
"map": {},
"regex": {},
"deep": {
"array": [
{}
]
},
"error": {},
}

lodash.clone

size explosion

structuredClone

good enough, but:
  • function
  • DOM nodes
  • property descriptors, setters, getters
  • object prototypes

Date:
Words:
89
Time to read:
1 min