浅拷贝

将 原数据 对象拷贝到 新数据 对象中,但不包括 原数据 里面的子对象
 

代码实例

// 原数据
  let y = {
    'name': 'zhangsan',
    'age': '18',
    // 原数据中的子对象
    'language': [1, [2, 3], [4, 5]],
  };

  // 创建第二个对象 把原数据赋值给它
  let f = y;

  // 创建对象 对 元数据 进行拷贝
  let c = shallowCopy(y);

  // 开始进行拷贝
  function shallowCopy(this) {
    // 创建对象
    let dst = {};
    // 将每个数据都给到 dst 变量
    for (let i in this) {
      dst[i] = this[i];
    }
    return dst;
  }

  // 改变赋值中的 name 会改变原始数据
  f.name = "lisi";
  // 浅拷贝的改变只会让自己的数据发生变化
  c.age = "20";

  // 改变原数据赋值的变量 也会改变原数据
  f.language[1] = ["二", "三"];
  // 浅拷贝只是复制一层对象,不包括里面的对象 所以会使 原数据发生变化
  c.language[2] = ["四", "五"];

  // 原始数据
  console.log(y);
  //y = {
  //    'name' : 'lisi',
  //    'age' :  '18',
  //    'language' : [1,["二","三"],["四","五"]],
  //};

  // 赋值操作得到的
  console.log(f);
  //f = {
  //    'name' : 'lisi',
  //    'age' :  '18',
  //    'language' : [1,["二","三"],["四","五"]],
  //};

  // 浅拷贝得到的
  console.log(c);
    //c = {
    //    'name' : 'zhangsan',
    //    'age' :  '20',
    //    'language' : [1,["二","三"],["四","五"]],
    //};

 

posted @ 2022-04-07 11:58  生活在北极的企鹅  阅读(69)  评论(0编辑  收藏  举报