JavaScript deepCopy 和 shallowCopy 之间的区别
javascriptfront end technologyobject oriented programming更新于 2025/11/21 8:12:17
浅拷贝和深拷贝与语言无关。浅拷贝尽可能少地复制。集合的浅拷贝是集合结构的副本,而不是元素的副本。使用浅拷贝,两个集合现在共享各个元素。
示例
let innerObj = {
a: 'b',
c: 'd'
}
let obj = {
x: "test",
y: innerObj
}
// 创建浅拷贝。
let copyObj = Object.assign({}, obj);
// copyObj 和 obj 的 prop y 现在都引用同一个 innerObj。对此的任何更改都将反映出来。
innerObj.a = "test"
console.log(obj)
console.log(copyObj)
输出
{ x: 'test', y: { a: 'test', c: 'd' } }
{ x: 'test', y: { a: 'test', c: 'd' } }
请注意,浅拷贝不会递归克隆。它只是在顶层进行克隆。
深拷贝会复制所有内容。集合的深层副本是两个集合,其中原始集合中的所有元素均被克隆。
示例
let innerObj = {
a: 'b',
c: 'd'
}
let obj = {
x: "test",
y: innerObj
}
// 创建深层副本。
let copyObj = JSON.parse(JSON.stringify(obj))
// copyObj 和 obj 的 prop y 现在都引用同一个 innerObj。对此的任何更改都将反映出来。
innerObj.a = "test"
console.log(obj)
console.log(copyObj)
输出
{ x: 'test', y: { a: 'test', c: 'd' } }
{ x: 'test', y: { a: 'b', c: 'd' } }
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

