再写一篇递归深拷贝
deepClone(newObj,oldObj){ for( var k in oldObj){ var item = oldObj[k]; //如果是数组 if(item instanceof Array){ newObj[k] = []; this.deepClone(newObj[k],item) // 如果是对象 }else if(item instanceof Object){ newObj[k] = {}; this.deepClone(newObj[k],item) // 简单数据类型 }else{ newObj[k] = item } } }
这里主要是对遍历的对象做个判断,如果是复杂数据类型(要先判断是否是数组,再判断是否是对象,注意顺序不能调换,因为数组也是对象)则使用递归;如果是简单数据类型则直接赋值。