Skip to content

Instantly share code, notes, and snippets.

@beetcb
Last active August 29, 2020 06:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beetcb/aa0de797e3fbe3322eea5861081813a0 to your computer and use it in GitHub Desktop.
Save beetcb/aa0de797e3fbe3322eea5861081813a0 to your computer and use it in GitHub Desktop.
clone a object's flags
// using spread expression
let [one, two, three] = [...'12', { ...'abc' }]
const obj = { one, two, three }
function realDeepClone(obj, key, clone) {
if (!key) {
clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj))
} else {
clone[key] = Object.defineProperties(
{},
Object.getOwnPropertyDescriptors(obj)
)
}
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object') return deepClone(obj[key], key, clone)
})
return clone
}
let clone = realDeepClone(obj)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment