js-day23-深拷贝与浅拷贝

45 阅读1分钟

浅拷贝:对象的复制只是复制对象的引用,可以改变原始数据的值

 const obj = {
    name: '王成',
    age: 18,
    like: ['篮球', 'rap', '小姐姐']
}
const obj2 = {
    ...obj
}
obj2.name = '崔傑瑜'
obj2.like[0] = '足球'
console.log(obj, obj2)

const obj = {
    name: '王成',
    age: 18,
    like: ['篮球', 'rap', '小姐姐']
}

const obj2 = {}
for(let key in obj){
    obj2[key] = obj[key]
}
obj2.name = '崔傑瑜'
obj2.like[0] = '足球'
console.log(obj, obj2)

深拷贝:彻底复制一个对象,而不是简单的拷贝对象的引用,拷贝后不能修改原始数据的值

 const obj = {
     name: '王成',
     age: 18,
     like: ['篮球', 'rap', '小姐姐']
 }
 // const obj2 = Object.assign({}, obj)
 // obj2.like[0] = '足球'
 // console.log(obj, obj2)

 // JSON.stringify()
 const obj2 = JSON.parse(JSON.stringify(obj))
 obj2.like[0] = '足球'
 console.log(obj, obj2)