拷贝和遍历DOM树
一、浅拷贝:
拷贝就是复制,就相当于把一个对象中的所有内容,复制一份给另一个对象,直接复制,
或者说,就是把一个对象的地址给了另外一个对象,他们的指向相同,两个对象之间有相同的属性或者方法,都可以使用
<script>
var obj1={
age:24,
sex:"男",
name:"Eric"
}
var obj2={};
//定义一个函数,把a对象中的所有属性复制到对象b中
function extend(a,b){
for(var key in a){
b[key]=a[key];
}
}
extend(obj1,obj2);
console.log(obj2.name);//Eric
console.log(obj2.sex);//男
console.log(obj2.age);//24
</script>
二、深拷贝:
<script>
var obj1={
age:25,
sex:"男",
car:["奥迪","特斯拉","五菱"],
dog:{
name:"小白",
age:6,
color:"黄色"
}
};
var obj2={};
//通过函数,把对象a中的所有数据拷贝到对象b中
function extend(a,b){
for(var key in a){
//先获取a对象中每个属性的值
var item=a[key];
//判断这个值是不是数组
if(item instanceof Array){
//如果是数组,在对象b中添加一个新的属性,并且这个属性值也是数组
b[key]=[];
//调用这个方法,把a对象的这个数组的属性值一个一个的复制到b对象这个数组属性中
extend(item,b[key]);
}else if(item instanceof Object){//判断这个值是不是对象类型的
//如果是对象类型的,那么在b对象中添加一个属性,也是对象
b[key]={};
//调用这个方法,把a对象中的属性对象的值.一个一个的复制到b对象的这个属性对象中
extend(item,b[key]);
}else{
//如果是普通的数据,直接复制到b对象这个属性中
b[key]=item;
}
}
}
extend(obj1,obj2);
console.dir(obj2);//见下图
</script>

三、遍历DOM树:
1、代码:
<div>
<!-- 遍历DOM树 -->
<h1></h1>
<p>
<span></span>
<span></span>
</p>
</div>
<ul>
<li>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
</li>
<li></li>
<li></li>
</ul>
<script>
//获取页面中的根节点---根标签
var root=document.documentElement;//html
//根据根节点,调用fn的函数,显示的是根节点的名字
function forDOM(root1){
//调用f1,显示的是节点的名字
f1(root1);
//获取根节点所有的子节点
var children=root1.children;
//调用遍历所有子节点的函数
forChildren(children);
}
//给我子节点,把子节点的所有子节点显示出来
function forChildren(children){
//遍历所有的子节点
for(var i=0;i<children.length;i++){
//每个子节点
var child=children[i];
//显示每个子节点的名字
f1(child);
//判断child下面有没有子节点,如果有子节点,那么就继续遍历
child.children&&forDOM(child);
}
}
function f1(root){
console.log("节点名字:======"+root.nodeName);
}
forDOM(root);
</script>

2、思路

拷贝和遍历DOM树的更多相关文章
- 函数遍历DOM树
//获取页面中的根节点--根标签 var root=document.documentElement;//html //函数遍历DOM树 //根据根节点,调用fn的函数,显示的是根节点的名 ...
- 先序遍历DOM树的5种方法
DOM树由文档中的所有节点(元素节点.文本节点.注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能.既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM ...
- jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
http://www.poluoluo.com/jzxy/201312/253059.html 在这个sprint中,因为要写前端UI,所以用到了jQuery,但是jQuery在向上遍历DOM树的AP ...
- JS高级---遍历DOM树
遍历DOM树 第一个函数: 给我根节点, 我会找到所有的子节点: forDOM(根节点) 获取这个根节点的子节点 var children=根节点的.children 调用第二个函数 第二个 ...
- 遍历DOM树
遍历DOM在jQuery中是非常重要的技术. 遍历DOM之前,需要对DOM有清晰的认识,了解文档节点.元素节点.属性节点.文本节点等相关概念.不清楚可以温习下<JavaScript教程.DOM树 ...
- JavaScript 算法应用: 遍历DOM树的两种方式
1 常见的DOM树结构: 2 DOM数遍历有两种方式: 3 广度优先代码: 4 深度优先遍历代码
- 遍历DOM树,each()遍历
在<jQuery教程/理解选取更新范围>一节中,我们知道:当选择器返回了多个元素时,可以使用一个方法来更新所有的元素,不再需要使用循环. 然后有的时候需要遍历元素,怎么办? 使用each( ...
- 遍历DOM树,理解更新范围
在JavaScript中,如果需求对多个元素重复进行同样的操作,就需要写一个循环来遍历选中的所有元素. 在jQuery中,当选择器返回了多个元素时,可以使用一个方法来更新所有的元素,不再需要使用循环. ...
- 遍历DOM树,链式操作
如果需要在同一个选取结果上使用多个jQuery方法,可以同时列出这些方法,并用.隔开,如下面的代码. 1 $("#one").hide().delay(500).fadeIn(15 ...
随机推荐
- Linux中request_irq()中断申请与处理说明
1. 中断的理解 中断你可以理解为就是一种电信号,是由硬件设备产生的然后发送给处理器,处理器接收到中断后,就会马上向操作系统反映此信号,之后就是系统的工作了. 这里有两个注意的地方,第一中断是随时都 ...
- wc 指令
统计文件的行数, 字符数, 字节数. wc 命令的功能相对简单,参数也较少,但是是统计文本行数,字符数的利器.具体的参数和用法如下 语法 wc [OPTION]... [FILE]... wc [OP ...
- react 提示消息队列 (支持动态添加,删除,多实例化)
import React from 'react' import PropTypes from 'prop-types' import AnimationOperateFeedbackInfo fro ...
- 求亲篇:数据库操作,SqlHelper,增删改查
1.利用SqlHelper类 2.简单的数据绑定输出 string strSql = "select * from login"; DataTable dt = SqlHelper ...
- Redis—.Net中的使用
StackExchange.Redis使用以及封装 来源:http://www.cnblogs.com/qtqq/p/5951201.html,https://www.cnblogs.com/xsj1 ...
- sql server 2012 分页/dapper/C#拼sql/免储存过程/简易
sql server 2012新特性, 支持 OFFSET/FETCH分页, 就像mysql的limit, 比之前的各种top舒服多了, 看各位大佬们的测评文章说效率也是不相上下的, 有时候写个小工 ...
- iOS 内存管理的一点小问题
现在大家的项目应该基本都是ARC了,如果还是MRC的话,赶紧转换到ARC吧!最近被临时拉过去开发iPad,由于项目原因,还是使用的MRC.今天在调部分界面的时候,发现一段代码,我怎么看都怎么觉得怪怪的 ...
- obj = obj || {} 分析这个代码的起到的作用
情况一: <script> function test(obj) { console.log(obj.value) } function student() { this.value = ...
- Android简单闹钟设置
利用AlarmManager实现闹钟设置 //设置本地闹钟,actiongString:闹钟标识 setLocAlarm(int week, String actionString) { Calend ...
- shell 三剑客之 sed pattern 详解
sed 基础介绍 语法格式 sed 处理过程 sed 选项 cat sed.txt '-p' 打印输出 ,默认输出两次,流输出一次,源文件输出一次 sed 'p' sed.txt -n 只显示处理的 ...