对象的深复制、对象的合并总结

一,对象的复制分为深复制和浅复制,浅复制就是当一个属性发生了改变,那么另一个对象里面的元素也发生了改变

 var obj={

a:1,

b:2 

};

b=obj;

二、对象的合并

1,$.extend({},obj1,obj2);深复制

2,  Object.assign(obj1,obj2)

 3, extend=function(o,n){

 for(item of n){

 if(n.haspropety(item)&&!n.haspropety(item)){

o[n]=p[n]; 

  }

  }}

二、 对象的深复制

1、

var obj={

 'a':1

b=JSON.parse(json.stringfy(obj));

3.1.存在的问题

 1, 不能进行深层次的引用

 2, 会忽略掉symbol

 3,   会忽略掉undefind

 4, 不能序列化函数

var obj={

 age:undefind,

 name:Symbol('mail'); 

 fn:function(){},

 k:'ooo', 

 注释:为了解决以上的问题,可以使用lodash

  使用:

var objects = [{ 'a': 1 }, { 'b': 2 }];

 

 var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);

    

2 使用jquery

var  ex=$.extend(true,obj2,obj1) 

3.递归的方式


function deep(p, c) {
for (var item in p) {
if (p.hasOwnProperty(item)) {
if (typeof p[item] === 'object') {
c[item] = Object.prototype.toString.call(p[item]) === '[object Array]' ? []; { }
deep(p[item],c[item])
} else {
c[item] = p[item];
}
}
}

}

 


 

posted @ 2018-09-04 21:10  focus_yaya  阅读(172)  评论(0编辑  收藏  举报