当前位置:网站首页 > Vue.js开发 > 正文

js中的深拷贝和浅拷贝(js中的深拷贝和浅拷贝有什么区别)



说说最近所学:浅拷贝和深拷贝也叫做浅克隆和深克隆,深浅主要针对的是对象的“深度”,常见的对象都是“浅”的,也就是对象里的属性就是单个的属性,而“深”的对象是指一个对象的属性就是一个对象,也就是对象里面套对象,就像嵌套函数一样。

为什么要使用深拷贝和浅拷贝?

如果现有var obj={....}这个对象,想复制对象obj2,一贯的做法就是obj2=obj1,这时虽然obj2拥有了obj1的所有属性,但obj2却不是自由的,因为它的改动会影响到obj1,obj1的改动也会直接影响到obj2,这不是我们所希望的。所以要用到深拷贝和浅拷贝。




浅拷贝和深拷贝就是为解决对象的直接赋值后依然“链接”的问题。也就是公用一个引用,一个改变会影响另一个。下面是常见的浅拷贝:

 
  

浅拷贝可以解决常见的对象,但倘若对象不是常见的那种呢?比如说对象里还有子对象,那么用浅拷贝就不够彻底,比如以下代码:

 
  

上面代码中,拷贝完成后更改了obj.a.son1,结果obj2.a.son1也随之改变,说明a依然存在公用同一个引用的现象,所以浅拷贝拷贝的并不彻底,不能彻底“挖到底” ,这时候深拷贝就该上场了,它能用递归的思想继续深挖,直到最底层为止。



下面就是深拷贝了:

 

通过上述代码可看出深拷贝拷贝的非常彻底,做到真正意义上的杜绝相同引用的问题。




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














版权声明


相关文章:

  • keil最新破解器(keil5.30破解)2026-04-15 09:27:06
  • vue路由守卫的几种方法(vue路由守卫控制页面跳转)2026-04-15 09:27:06
  • vue教程菜鸟教程(vue入门教程简书)2026-04-15 09:27:06
  • js深拷贝和浅拷贝的区别(js实现深拷贝和浅拷贝)2026-04-15 09:27:06
  • pcie4.0x2速度(pcie4.0x4速度)2026-04-15 09:27:06
  • vue2改成vue3麻烦吗(vue2项目换成vue3)2026-04-15 09:27:06
  • 支持pcie5.0的显卡有哪些(支持pcie 4.0的显卡)2026-04-15 09:27:06
  • js深拷贝和浅拷贝如何实现(js深拷贝与浅拷贝的区别)2026-04-15 09:27:06
  • vue生命周期常用的四个钩子函数(vue中常用的生命周期钩子函数)2026-04-15 09:27:06
  • js数组方法哪些会改变原数组(js数组方法哪些会改变原数组的大小)2026-04-15 09:27:06
  • 全屏图片