对象克隆

对象克隆方法
基础克隆

闲话不多说直接上代码

	通过json.stringify和json.parse方法克隆
	原理.通过json.stringify将对象转换成字符串,再将字符串赋值给其它变量,最后再用json.parse解析
	通过遍历对象key克隆
	function list(key){
		var  Target = this;
		var inner;
		if(obj.constructor == object){
			inner = new.object.constructor();
		}else{
			inner = new.objcet.constructor(obj.valueof());
		}
		for(var  ki in obj){
			if(inner(key) != obj(key)){
				if(typeof(obj[key])) == 'object'){
					o[key] = that.list(obj[key])
				}else{
					o[key] = obj[key];
				}
			}
		}
		list.tostring = obj.tostring;
		list.valueof = obj.valueof;
		return list;
	}
	var obj = {a:};
	var newobj = clone(obj);
	newobj.a = 22; 

深度克隆

	function deepArray(origin,target){
		var target = target || {};
			tostr = object.prototype.tostring;
			arrstr = "[objcet Array]";
		for(let prop in origin){
			if(origin[prop] !== "null" && typeof(origin[prop]) == "objcet"){
				target[prop] = tostr.call(objcet[prop]) == arrstr ? [] : {};
					deepClone(origin[prop],target[prop]);
			}else{
				target[prop] = origin[prop];
			}
		}
		return target;
	}

以上方法借鉴了ES6,let方法形成局部作用域,上述深度克隆还有待改进,目前只能对objcet数组进行比对,在其他几个对象构建还不能进行改动,需将arrstr赋值进行改动才能进行比对。

记录美好
记录成长的每一天,有什么不对的地方还请指出来,坚信做自己喜欢的事情,人生短短不过百年为自己喜欢的事情一直做下去无论前方的路多么艰辛,相信自己,上帝关了一扇门,开启一扇窗,愿童靴们一直发光下去!!!

很喜欢的一句话
不要让未来的你,讨厌现在的自己!共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值