复杂数组以及对象的深度拷贝

//测试用例
		var obj = {
			name: "ceshi",
			age: 12,
			list: [{
				name: "ceshi2",
				age: 13
			}, {
				name: "ceshi3",
				age: 14
			}]
		};

方法一:利用JSON

var str=JSON.stringify(obj);
//验证
obj.list[0].name="new123";
var newObj=JSON.parse(str);

方法二:递归

function clone(obj){
			var newObj;
			//数组类型的拷贝
			if (obj instanceof Array) {
				 newObj=[];
				var i=obj.length;
				while(i--){
					newObj[i]=clone(obj[i]);
				}
				return newObj;
			}
			//对象类型的拷贝
			else if(obj instanceof Object){
				 newObj={};
				 for (var k in obj) {
				 	newObj[k]=clone(obj[k]);
				 }
				 return newObj;
			}
			else {
				return obj;
			}
		}
		var newObj=clone(obj);
		obj.list[0].name="OK";
		alert(obj);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值