学习笔记-----对象里的浅拷贝和深拷贝;数组中的浅复制和深复制;

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];
    }
  }
}

////////////////////////////////////未完,浅复制和深复制过段时间更新