我有一个像这样的多步骤 JavaScript 对象:
const source = {
prev: [],
current: {
list: [{ a: 1, b: 2, c: 3 }],
data: [{ c: 1, b: 2 }]
},
id: 12,
next: []
};
我想创建它的新副本。
我知道如果我使用像 let copy = { ...source };
这样的东西,它就像一个浅拷贝。因此,如果我更改 source
中的这些数组或对象,它们也会在 copy
中更改。
无论如何,通过解构,我可以获得所有项目的新副本吗?或者我应该像这样手动为每个深度级别执行此操作:
copy.prev = [...source.prev]
copy.current.list = [...source.current.list]
copy.current.data= [...source.current.data]
等等
最佳答案
有一种旧方法可以做到这一点,但仍然有效:
var cloned = JSON.parse(JSON.stringify(original));
关于javascript - 从 javascript 中现有的对象克隆一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345210/