深拷贝中递归方法的解释

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>深拷贝</title>
	</head>
	<body>
	</body>
	<script>
		var obj = {
			name : '张三',
			hobby : ['吃饭','睡觉','打豆豆'],
			address : {
				newadd : '合肥'
			}
		}
		
		var newobj = []
		
		function demo(newobj,obj){
			for (let key in obj) {
				let value = obj[key]
				if(obj[key] instanceof Array){  //如果是数组类型
					newobj[key] = []           //开辟新的内存空间
					demo(newobj[key] , value)
				}else if(obj[key] instanceof Object){ //如果是对象类型
					newobj[key] = {}			//开辟新的内存空间
					demo(newobj[key] , value)
				}else{    //如果是基本数据类型,直接赋值
					newobj[key] = value
				}
			}
		}
		demo(newobj,obj)
		obj['hobby'].push('学习')
		console.log(newobj);
// 执行原理 : 注意 obj[key] 等同于 obj.key  ,这里的key是动态的
		// 第一次执行 key是name ,即obj[key] =&#

猜你喜欢

转载自blog.csdn.net/tea_tea_/article/details/127934473