javascript-objects - JavaScript deep copy - 如何正确克隆一个JavaScript对象?

object.assign / javascript / clone

我有一个对象 x 。我想将其复制为对象 y ,以使对 y 的更改不会修改 x 。我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性。这不是问题,因为我正在复制自己的文字构造对象之一。

Kamil Kiełczewski



Answer #1

完整克隆:

let x = {a: 'value1'}
let x2 = {...x}

// =>无需引用即可进行变异:

x2.a = 'value2'
console.log(x.a)    // => 'value1'

克隆二级引用:

const y = {a: {b: 'value3'}}
const y2 = {...y}

// =>嵌套对象仍然是引用:

y2.a.b = 'value4'
console.log(y.a.b)    // => 'value4'