浅拷贝、深拷贝

75 阅读1分钟
<!DOCTYPE html>
<html> 
 <head> 
  <meta charset="UTF-8"> 
  <title>Insert title here</title> 
 </head> 
 <body> 
  <script>
     let news={}
	 let obj = {
        name:'徐益栋1',
        age:23,
		student:{
		score:34
		},
		mark:[1,3,4,5,5]
    }
// 浅拷贝(拷贝第一层属性数据,第二次对象采用地址引用形式,即改变新对象的第二层值的同时旧对象也发生变化)
	// Object.assign(news,obj)

	// news.student.score = 100
	// news.name='周智莹'
	// console.log(news)
	// 	console.log(obj);
//深拷贝
function deepCopy(newObj,oldObj){
	for(k in oldObj) {
		let item = oldObj[k]
		if(oldObj[k] instanceof Object){
			newObj[k] = {} 
			console.log(item);
			deepCopy(newObj[k],item)
		}else if (oldObj[k] instanceof Array){
			newObj[k] = [] 
			console.log(item);
			deepCopy(newObj[k],item)
		}
		else{
			newObj[k] = item
		}
	}
}
deepCopy(news,obj)
console.log(news);
news.student.score = 100
console.log(obj);
// console.log(obj[name]);
</script>  
 </body>
</html>