实现简单数据结构深拷贝

const oldObj = {
	name:'成立',
	age:18,
	gender:['男','女'],
	hobby:{
		hobby1:'打球',
		hobby2:'打球'
	}
}
let newObj = {}
//1.递归写法
function deepCopy(newObj, oldObj){
	for(key in oldObj){
		//先判断数组否则会出问题原因[] instanceof Array--ture [] instanceof Object--true
		if(oldObj[key] instanceof Array){
			newObj[key] = []
			deepCopy(newObj[key], oldObj[key])
		}else if(oldObj[key] instanceof Object){
			newObj[key] = {}
			deepCopy(newObj[key], oldObj[key])
		}else{
			newObj[key] = oldObj[key]
		}
	}
}
//2.Object.assign--只能拷贝单层数据结构,多层数据结构只能实现浅拷贝
const o = {a:1};
let n = {};
n = Object.assign(n,o);
//3.利用JSON.parse,JSON.stringify转换,函数无法转换
const o = {a:1,b:()=>{}};
let n = {};
n =JSON.parse(JSON.stringify(o));
console.log(n);//{"a": 2}
console.log(o);//{"a": 1,b:()=>{}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值