浅拷贝:
只拷贝当前对象的属性和方法,如果属性和方法是引用类型则只拷贝地址,所以会指向同一块内存空间,不完全独立。
深拷贝:
连同结构一起拷贝,完全独立。
// 浅拷贝
function copy(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj2[key];
}
}
Object.assign(target, ...sources) //es6语法糖,浅拷贝
// 深拷贝
function deepCopy(obj1, obj2) {
for (var key in obj2) {
var item = obj2[key];
if (item instanceof Array) {
obj1[key] = [];
deepCopy(obj1[key], item);
} else if (item instanceof Object) {
obj1[key] = {};
deepCopy(obj1[key], item);
} else {
obj1[key] = item;
}
}
}
递归查询DOM树
//递归查询DOM树
var root = document.documentElement;
function forDOM(root1) {
fn(root1);
var children = root1.children;
forChildren(children);
}
function forChildren(children) {
for (var i = 0; i < children.length; i++) {
var child = children[i];
fn(child);
child.children && forDOM(child);
}
}
function fn(node) {
console.log("节点名字:" + node.nodeName);
}
forDOM(root);