对象的深复制、对象的合并总结
一,对象的复制分为深复制和浅复制,浅复制就是当一个属性发生了改变,那么另一个对象里面的元素也发生了改变
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];
}
}
}
}