JavaScript deepCopy和shallowCopy之间的区别
浅拷贝和深拷贝与语言无关。浅拷贝应尽可能少地重复。集合的浅表副本是集合结构的副本,而不是元素。对于浅表副本,现在两个集合共享各个元素。
示例
let innerObj = {
a: 'b',
c: 'd'
}
let obj = {
x: "test",
y: innerObj
}
//创建一个浅表副本。
let copyObj = Object.assign({}, obj);
//现在,copyObj和obj的属性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的属性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' } } 热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短