对象克隆方法
基础克隆
闲话不多说直接上代码
通过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赋值进行改动才能进行比对。
记录美好
记录成长的每一天,有什么不对的地方还请指出来,坚信做自己喜欢的事情,人生短短不过百年为自己喜欢的事情一直做下去无论前方的路多么艰辛,相信自己,上帝关了一扇门,开启一扇窗,愿童靴们一直发光下去!!!
很喜欢的一句话
不要让未来的你,讨厌现在的自己!共勉