深克隆和浅克隆

深克隆和浅克隆

浅克隆和深克隆最大的区别就是对引用值的处理,即浅克隆之后你改我也改,深克隆之后你改我不改。

对象克隆:

const stu = { // 第一层
  name: '张三',
  birthday: '1999-01-01',
  address: { // 第二层
    province: '四川',
    city: '成都',
    detail: [], // 第三层
  },
}

console.log(stu)

1、浅克隆:对象第一层是直接克隆值,第二层及以下是克隆的引用

const copy = {
  ...stu,
}
console.log(copy)
console.log(copy === stu) // false
// 第二层及以下的值,是相等的
console.log(copy.address === stu.address) // true
// 如果修改第二层及以下的值,原本对象的第二层及以下的值也会相应改变
copy.address.city = '绵阳'
console.log(stu)

2、深克隆:每一层都克隆值

const copyDeep = JSON.parse(JSON.stringify(stu))
console.log(copyDeep); //和stu一样
// 修改第一层的值和第二层及以下的值都会相应改变
copyDeep.name="李四"
copyDeep.address.city = '乐山'
console.log(copyDeep);

深克隆的实现方式请跳转至深克隆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值