浅拷贝是是复制一个对象的属性和方法,类似地址复制
案例:
function copy(obj1,obj2){
for(key in obj1) {
obj2[key] = obj1[key];
}
}
obj1 = {
age: 5,
name: "name"
}
obj2 = {};
copy(obj1,obj2);
console.dir(obj1);
console.dir(obj2);
深拷贝则会开辟新的空间来存储新的数值
function copy(obj1,obj2){
for(key in obj1) {
if(obj1[key] instanceof Object) {
obj2[key] = {};
copy(obj1[key],obj2[key]);
}
else if(obj1[key] instanceof Array) {
obj2[key] = [];
copy(obj1[key],obj2[key]);
}
else {
obj2[key] = obj1[key];
}
}
}
obj1 = {
age: 5,
obj: {
name: "大黄"
},
arr: [1,2,3]
}
obj2 = {};
copy(obj1,obj2);
console.dir(obj1);
console.dir(obj2);