JavaScript学习5_递归
递归深拷贝
递归思想就不赘述了,主要是深拷贝
var obj1 ={ age:10, sex:'男', car:['11','22','33'], dog:{ name:'44', age: 5, color:'66' } }; var obj2={}; function extend(a,b) { for(var key in a){ var item = a[key]; // 当为数组时,则逐个拷贝 if(item instanceof Array){ b[key]=[]; extend(item,b[key]) }else if(item instanceof Object){ b[key]={}; extend(item,b[key]) }else{ b[key]=item; } } } // 调用拷贝 extend(obj1,obj2) console.log(obj1); console.log(obj2);
递归获取DOM名称
//获取页面中的根节点--根标签 var root=document.documentElement;//html //函数遍历DOM树 //根据根节点,调用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); } } //函数调用,传入根节点 forDOM(root); function f1(node) { console.log("节点的名字:"+node.nodeName); }