深浅拷贝 和jQuery中深浅拷贝 的相关内容

浅拷贝

 浅拷贝就是复制 内存地址,相当于多个数组占用一个共同的内存地址

举个例子:

const arr1=['上海','北京','天津']
const arr2=arr1
//arr2 arr1共用一个内存地址
console.log(arr1,arr2)     //两个一样

//修改arr2[0]
arr2[0]='未知'
console.log(arr1,arr2)     //arr1[0] ,arr2[0] 的数据都会改变为未知

1. 浅拷贝复制 内存地址

2. 一个数组 改变数据,其他的所有数组都会受到影响改变数据

深拷贝

深拷贝就是 复制数组数据 每个都是不同的内存地址

举个例子:

const arr1=[1,2,3]
const arr2=[]
arr1.forEach(item=>{
    arr2.push(item)
})
console.log(arr1,arr2)   // arr1 arr2一样
//修改arr1 
arr1[0]=0
console.log(arr1,arr2)   // arr1:[0,2,3]   arr2:[1,2,3]

1. 深拷贝复制 数组数据

2. 一个数组改变数据 , 其他数组的数据不会受到影响

jQuery中的深浅拷贝 - $.extend()

1. $.extend( 新,旧 )    ---    一维 深拷贝,多维 浅拷贝 - 没有递归 - 循环一次

举个例子:

const arr1 = [1,2,3,4,[5,6,7,8]]
$.extend( arr2 , arr1 )
console.log(arr1,arr2)    //arr1 arr2 一样
//修改 arr1[0] = 0  arr1[4][0] = 0
arr1[0] = 0
arr1[4][0] = 0
console.log(arr1,arr2)    //arr1:[0,2,3,4,[0,6,7,8]]    arr2:[1,2,3,4,[0,6,7,8]]

2. $.extend( true , 新 , 旧 )    ---    一维多维 都 深拷贝 - 递归循环

举个例子:

const arr1 = [1,2,3,4,[5,6,7,8]]
$.extend( true, arr2 , arr1 )
console.log(arr1,arr2)    //arr1 arr2 一样
//修改 arr1[0] = 0  arr1[4][0] = 0
arr1[0] = 0
arr1[4][0] = 0
console.log(arr1,arr2)    //arr1:[0,2,3,4,[0,6,7,8]]    arr2:[1,2,3,4,[5,6,7,8]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值