原生递归实现拷贝 ----- 深拷贝
function deepCopy(data) {
if (typeof data !== 'object') {
return data
} else {
var tempData = Array.isArray(data) ? [] : {}
for (var i in data) {
if (typeof data[i] !== 'object') {
tempData[i] = data[i]
} else {
tempData[i] = deepCopy(data[i])
}
}
return tempData
}
}
利用JSON.parse() 和JSON.stringify()快速实现数据拷贝 ----- 深拷贝
let json = {
a: '1',
b: {
c: 'c'
},
d: [1, 2, 3]
}
let arr= [
{a: '1'},
{b: '2'}
]
let newJson = JSON.parse(JSON.stringify(json))
let newArr = JSON.parse(JSON.stringify(arr))
ES6解构 — 浅拷贝
var a = {b: 2}
var c = {...a}
c.b = 3
console.log(a) // {b: 2}
console.log(c) // {b: 3}
var d = [{e : 4}]
var f = [...d]
f[0].e = 5
console.log(d) // [ { e: 5 } ]
console.log(f) // [ { e: 5 } ]
Object.assign() — 浅拷贝
var json = {a: 1}
var newJson = Object.assign({}, json, {b : 2})
newJson.a = 3
console.log(json) // { a: 1 }
var json = {
a: {
b: 5
}
}
var newJson = Object.assign({}, json, {d : 2})
newJson.a.b = 3
console.log(json) // { a: { b: 3 } }