解决深拷贝浅拷贝

16 篇文章 0 订阅
本文探讨了JavaScript中实现对象深复制的方法,包括递归实现深复制的函数以及使用JSON.parse和JSON.stringify的转换技巧。示例代码展示了如何对复杂对象进行深拷贝,并在控制台输出复制结果。
摘要由CSDN通过智能技术生成

递归

var china = {
	  	nation : '中国',
	  	birthplaces:['北京','上海','广州'],
	  	skincolr :'yellow',
	  	friends:['sk','ls']
	  }
	  //深复制,要想达到深复制就需要用递归
	  function deepCopy(o,c){
	    var c = c || {}
	    for(var i in o){
	    if(typeof o[i] === 'object'){
	  	   	   	  //要考虑深复制问题了
                      if(o[i].constructor === Array){
                    	//这是数组
                    	c[i] =[]
                    }else{
                    	//这是对象
                    	c[i] = {}
                    }
                    deepCopy(o[i],c[i])
	  	   	   }else{
	  	   	   	 c[i] = o[i]
	  	   	   }
	  	   }
	  	   return c
	  }
	  var result = {name:'result'}
	  result = deepCopy(china,result)
	  console.dir(result)

json方式

var result = JSON.parse(JSON.stringify(test))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包装类的深拷贝浅拷贝是指在复制一个包装类对象时,对于其中的字段如何进行复制的过程。 浅拷贝是指只复制值类型字段的值,而对于引用类型字段,只复制其引用。也就是说,新创建的对象和原始对象会共享一部分内存空间,导致对其中一个对象进行修改会影响到另一个对象。 深拷贝是指除了复制值类型字段的值外,还会对引用类型字段所指向的对象进行一次完全的拷贝。也就是说,新创建的对象会有自己独立的一份内存空间,对其中一个对象进行修改不会影响到另一个对象。 实现深拷贝的方法有多种。其中一种常用的方法是利用反序列化技术,通过将对象序列化为字节流,然后再将字节流反序列化为一个全新的对象。这种方法可以解决多层套娃式的深拷贝问题,并且效果非常好。 另外一种实现深拷贝的方式是通过覆写对象的clone()方法,实现引用对象的深度遍历式拷贝。这种方式需要对clone()方法进行重写,以便对引用对象进行递归拷贝。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Java】深拷贝浅拷贝(Java实现)](https://blog.csdn.net/hhb442/article/details/128801265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值