实现简单数据结构深拷贝

文章介绍了在JavaScript中使用递归实现深拷贝的方法,以及Object.assign的浅拷贝局限性,以及通过JSON.parse和stringify进行转换的示例。
摘要由CSDN通过智能技术生成
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:()=>{}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值