浅拷贝、深拷贝、遍历DOM树

在这里插入图片描述
浅拷贝、深拷贝、遍历DOM树

1、浅拷贝

是指复制, 是指将一个对象中所有数据复制到另一个对象中;就是指 讲一个对象地址 复制到另一个对象,

他们的指向是相同的, 并且他们的所有数据(属性和方法) 是共同的

// in  关键字   for(var k in 被遍历对象){}

2, 深拷贝====>递归

深拷贝 也是指复制 是指将对象中的所有数据(属性和方法) 一个一个找打, 并且在另一个对象中开辟相应的空间

然后在一个一个的存储在这个对象中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			var obj1={
				name:{ 
					xiaoming:'二狗子',
					guanming:'王二狗'
				},
				age:34,
				car:['保时捷','法拉利','劳斯拉斯',['宝马520','奇瑞QQ'],['自行车','电驴']],
				flower:{
					name:'玫瑰',
					type:'爱情',
					color:{
						color_01:'蓝色',
						color_02:'黑色',
						color_03:'白色'
					}
				}
			}
			obj2={};
			function sheng(a,b){
				for(var k in a){
				var	item=a[k];//将对象循环遍历把值赋给item
					if(item instanceof Array){//判断当前遍历出来的值是不是数组,要是数组就把值给b[k]
						b[k]=item;
						//console.log(b[k]);//["保时捷", "法拉利", "劳斯拉斯", Array(2), Array(2)]
						sheng(item,b[k]);//将数组进行遍历 如果有下级数组继续便利  如果没有结束
					} else if(item instanceof Object){
						b[k]=item;//如果是对象  就将当前对象再次遍历
						sheng(item,b[k]);
					}else{
						b[k]=item;//剩下的数据直接进行赋值
					}
				}
			}
			sheng(obj1,obj2);
			console.log(obj2);
		</script>
	</head>
	<body>
	</body>
</html>

3, 遍历DOM树 ====>递归实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>遍历dom树</title>
	</head>
	<body>
		<div></div>
		<script type="text/javascript">
			/*分析:先获取根节点
			 * 定义一个函数然后遍历子节点
			 * 定义一个函数获取遍历出的子节点的节点名称
			 * 将获取到的子节点在继续遍历
			 * */
			var root=document.documentElement;//获取根节点
			bianli(root);
			function bianli(ele){//遍历根节点
				for(var i=0;i<ele.children.length;i++){//条件为当前元素的子元素的length
					getnodename(ele.children[i]);//输出遍历的节点的节点名称
					bianli(ele.children[i]);//子元素可能还有子元素     在这里继续调用
				}
			}
			//获取名字的函数
			function getnodename(n){
				console.log(n.nodeName)//将节点名称打印到控制台
			}
		</script>
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值