学习笔记-----对象里的浅拷贝和深拷贝;数组中的浅复制和深复制;
1.对象
对象浅拷贝:
一个对象的成员复制给另一个对象的成员时,只能把第一层的值给复制过去,若复制的成员中含有对象,那么复制的成员对象复制的只是内存地址,只是将其映射过去,但是并没有重新创建出一个新的内存区域去存这个对象
var obj1 = {
name: ‘zs’,
age: 18,
sex: ‘男’ ;
dog: {
///此时修改这个会使obj2中的dog成员里的name属性同时发生变化
name: aaa;
}
}
var obj2 = {};
for (var key in obj1) {
obj2[key] = obj1[key];
}
深拷贝:能够多层复制
var obj1 = {
name: 'zs',
age: 18,
sex: '男',
dog: {
name: '金毛',
age: 2
},
friends: ['ls', 'ww']
}
// 深拷贝 把o1的成员拷贝给o2
function deepCopy(o1, o2) {
for (var key in o1) {
// 获取key属性对应的值
var item = o1[key];
// 如果item 是对象
if (item instanceof Object) {
o2[key] = {};
deepCopy(item, o2[key]);
}
else if (item instanceof Array) {
//如果item 是数组
o2[key] = [];
deepCopy(item, o2[key]);
}
else {
// 如果是简单类型
o2[key] = o1[key];
}
}
}
////////////////////////////////////未完,浅复制和深复制过段时间更新