标签:tor var 属性 对象 ret 深拷贝 const type object
function merae(obj1, obj2) {
for (var p in obj2) {
try {
if ( obj2[p].constructor==Object ) {
obj1[p] = merae(obj1[p], obj2[p]);
} else {
obj1[p] = obj2[p];
}
} catch(e) {
//未设置目标对象中的属性;创建它并设置其值。
obj1[p] = obj2[p];
}
}
var o1={
a:1,
b:{bb:2},
c:{cc:3,ccc:4}
};
var o2={d:9,a:2};
merae(o2,o1);
//console.log(o2);//{a: 1,b: {bb: 2},c: {cc: 3, ccc: 4},d: 9}
o1.a=5;
//深拷贝不是浅拷贝
//console.log(o2);//{a: 1,b: {bb: 2},c: {cc: 3, ccc: 4},d: 9}
//console.log(o1);//{a:1,b:{bb:2},c:{cc:3,ccc:4}};
function deepClone(source){
let targetObj = source.constructor === Array ? [] : {};
for(let keys in source){
if(source.hasOwnProperty(keys)){
if(source[keys] && typeof source[keys] === ‘object‘){
targetObj[keys] = source[keys].constructor === Array ? [] : {};
targetObj[keys] = deepClone(source[keys]);
}else{
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}
var o1={
a:1,
b:{bb:2},
c:{cc:3,ccc:4}
};
let o2=deepClone(o1);
console.log(o2);
o1.a=5;
console.log(o2);//{a: 1, b: {…}, c: {…}}
console.log(o1);//{a: 5, b: {…}, c: {…}}
标签:tor var 属性 对象 ret 深拷贝 const type object
原文地址:https://www.cnblogs.com/myniu/p/11992825.html