js浅拷贝深拷贝

js浅拷贝深拷贝

对于想要复制的对象,如果对象里面对应的值都是基本数据类型的,可以直接复制 也就是通过浅拷贝复制。如果对应的值有对象那么浅拷贝是行不通的。会造成数据污染。下面介绍浅拷贝与深拷贝实现方法。

1.浅拷贝

let tem={
	a:"1",
	b:2
}
let copy={};
for(let key in tem){
copy[key]=tem[key]}

2.通过object.assign方法浅拷贝。

let tem={
	a:"1",
	b:2
}
let copy={};
Object.assign(copy,tem,.....)

3.深拷贝

let tem={
a:"1",
	b:2,
	c:['1','2','3'],
	d:{g:"xxx",re:{x:"xxx"}}
}
//用于判断当前属性值是否是对象
  function isObj(obj) {
        return obj instanceof  Object;
    }
    //这里是对象深拷贝方法
    function deepCopy(fromObj,toObj) {
        for(let key in fromObj){
            let fromValue=fromObj[key]
            if(!isObj(fromValue)){
                toObj[key]=fromValue
            }else{
                let temObj=new fromValue.constructor;
                deepCopy(fromValue,temObj);
                toObj[key]=temObj
            }
        }
    };
    let copy={};
    deepCopy(tem,copy);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值