浅拷贝

  • 浅拷贝已关闭评论
  • 207 次浏览
  • A+
所属分类:Web前端
摘要

 

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

代码实例

// 原数据   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,["二","三"],["四","五"]],     //};