javascript中深拷贝与浅拷贝

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>深浅拷贝</title>
	<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
	<script>
		var oldobj={
			name:'呀呀呀',
			older:{
				age:13
			},
			color:['pink','red','orange']
		}
		var newobj={};
	//js原生语法浅拷贝
	   /*for(var i in oldobj){
	   	 newobj[i]=oldobj[i];
	   }
	   newobj.older.age=23;
     console.log(oldobj);*/
  //js语法糖浅拷贝
    /*Object.assign(newobj,oldobj);
    newobj.older.age=23;
    console.log(oldobj);*/
  //js语法糖深拷贝
    function deepCopy(newobj,oldobj){
       for(k in oldobj){
       	  var item=oldobj[k];
       	  if(item instanceof Array){
             newobj[k]={};
             deepCopy(newobj[k],item);
       	  }else if(item instanceof Object){
       	  	newobj[k]=[];
       	  	deepCopy(newobj[k],item)
       	  }else{
       	  	newobj[k]=oldobj[k];
       	  }
       }
    }
    deepCopy(newobj,oldobj);
    newobj.older.age=23;
		console.log(oldobj);
  //jQuery浅拷贝
   /* $.extend(newobj,oldobj);
		newobj.older.age=23;
		console.log(oldobj);*/
	//jQuery深拷贝
    /*$.extend(true,newobj,oldobj);
    newobj.older.age=23;
    console.log(oldobj);*/
	</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值