拷贝对象(深拷贝,浅拷贝)

a 1 = [{a:1},{b:1} ]或者 [1,2,3]

Typeof(数组a1),// “Object”
A1 instanceof Arrray  //true 

所谓的浅拷贝和深拷贝:
浅拷贝是在在拷贝过程中,遍历时那部分为对象/数组类型指向原来的地址,
而深拷贝,则是完全开辟新的内存地址。

浅拷贝:对拷贝对象的引用,不是本身
① For (var I in obj) 最后用var CloneObj= simpClone(拷贝对象obj)
在这里插入图片描述
Object.assign( {目标}, 源obj)

③扩展运算符。
可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开;还可以在构造对象时, 将对象表达式按key-value的方式展开。
构造对象时,进行克隆或者属性拷贝(ECMAScript 2018规范新增特性):

对象
let objClone = { ...obj };
var mergedObj = { ...obj1, ...obj2 };

数组
var arr = [1, 2, 3];
var arr2 = [...arr]; // 等同于 arr.slice()

深拷贝:把拷贝对象所引用的全部对象也复制了

加粗样式① JSON.parse(JSON.stringify( ))
只能处理Number、String、Bloon、Array
简单易用,但是会抛弃对象原有的constructor,即不管原来构造函数是啥,拷贝后是Object

② 递归拷贝
最后通过 var targeObj=deepClone(source需要拷贝的源对象,{})
在这里插入图片描述
③ 引用做深拷贝的库
jquery
let targetObj = $.extent(true,{},sourceObj)

** lodash库 es6写法**
import lodash from ‘lodash’
let targetOj = lodash.cloneDeep(sourceObj)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值