浅拷贝单层对象
1 2
| let obj = { id: 1, title: "1" } let copyOfObj = Object.assign({}, obj)
|
深拷贝多层对象
1 2 3 4 5 6 7
| let obj = { id: 1, title: "1", tag: ['js', 'javascript'], category: { id: 1001, title: 'frontend' } } let copyOfObj = JSON.parse(JSON.stringify(obj))
|
浅拷贝简单类型数组
1 2
| let arr = [1, 2, 3] let copyOfArr = [...arr]
|
深拷贝单层对象组成的数组
1 2 3 4 5 6 7
| let arr = [ { id: 1, title: "1" }, { id: 2, title: "2" }, { id: 3, title: "3" } ] let copyOfArr1 = arr.map((item) => Object.assign({}, item)) let copyOfArr2 = JSON.parse(JSON.stringify(arr))
|
深拷贝多层对象组成的数组
1 2 3 4 5 6 7
| let arr = [ { id: 1, title: "1", subObj: { name: 'subObj1' } }, { id: 2, title: "2", subObj: { name: 'subObj2' } }, { id: 3, title: "3", subObj: { name: 'subObj3' } } ] let copyOfArr1 = arr.map((item) => JSON.parse(JSON.stringify(item))) let copyOfArr2 = JSON.parse(JSON.stringify(arr))
|
总结
不考虑性能的情况下,JSON.parse(JSON.stringify(value))
是最简最万能的拷贝。