当前位置:网站首页 > 前端开发 > 正文

深拷贝

tips:改变变量a导致变量b的值也发生了同样变化 一般是因为未对变量b进行深拷贝导致

遍历(仅限于一层,数组的item是基本类型)

let a = [1,2,3,4]; let b = []; a.forEach(item=>{ b.push(item) }); console.log(b);//拷贝后a和b的值相同 a[0] = 5; console.log(b);//即使改变a的值,b的值也不会发生改变

ES6展开符...(仅限于一层,数组的item是基本类型)

let a = [1,2,3,4]; let b = [...a]; console.log(b); a[0] = 5; console.log(b);

concat()函数

let a= [1,2,3,4]; let b = a.concat(); console.log(b); a[0] = 5; console.log(b);

使用JSON.parse(),JSON.stringify()实现对对象的深拷贝

根据不包含引用对象的普通数组深拷贝得到启发,不拷贝引用对象,拷贝一个字符串会新辟一个新的存储地址,这样就切断了引用对象的指针联系

var test={ a:"ss", b:"dd", c:[ {dd:"css",ee:"cdd"}, {mm:"ff",nn:"ee"} ] }; var test1 = JSON.parse(JSON.stringify(test));//拷贝数组,注意这行的拷贝方法 console.log(test); console.log(test1); test1.c[0].dd="change"; //改变test1的c属性对象的d属性 console.log(test); //不影响test console.log(test1);

 

 

到此这篇深拷贝的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ElementUI 监听表单有内容修改时提交执行相应操作2024-11-30 13:36:04
  • ElementUI 表格中某项为空值时用暂无数据代替显示2024-11-30 13:36:04
  • ElementUI上传文件-限制上传文件个数2024-11-30 13:36:04
  • ElementUI对表格某一行执行操作和批量操作限制2024-11-30 13:36:04
  • 字符串类型的操作方法2024-11-30 13:36:04
  • 对象操作方法2024-11-30 13:36:04
  • 数组类型操作方法2024-11-30 13:36:04
  • elementUI实现对表格批量操作2024-11-30 13:36:04
  • 证件-护照:护照2024-11-30 13:36:04
  • ideal插件下载(以阿里规约为例)2024-11-30 13:36:04
  • 全屏图片