对象的深层副本将复制它在我们要复制的对象中遇到的每个对象。副本和原始对象不会共享任何内容,因此它将是原始副本。
最简单的方法是将对象转换为JSON字符串,然后将其转换回JS对象。但是,这种方式不允许方法复制。
let obj = {
foo: 1,
bar: { baz: 'test' }
}
let newObj = JSON.parse(JSON.stringify(obj));
obj.bar.baz = 20;
console.log(obj);
console.log(newObj);输出结果
{ foo: 1, bar: { baz: 20 } }
{ foo: 1, bar: { baz: 'test' } } 这里的newObj不会随着对原始obj的更新而更改,因此深层复制成功。