递归实现深拷贝的逻辑就是
层层递归浅拷贝
定义一个数组或者对象 ,根据原数据的引用类型判断,然后定义递归的方法
先判断是不是数组,在判断是不是对象,如果都不是,直接赋值
是数组,则定义一个数组,是对象则定义一个对象
- const obj = {
- name:"liu",
- age:"22",
- hobby:"vue",
- anything: {
- name:"jia",
- age:"22",
- hobby:"react",
-
- },
- any:["a","b","c"]
-
-
- }
- const o = { }//拷贝的对象
-
- // 拷贝函数
- // 一定是先数组再对象 因为数组就是特殊的对象
- function deepCopy(newObj,oldObj) {
- for(let k in oldObj) {
- // 数组的情况下
- if(oldObj[k] instanceof Array) {
- newObj[k] = []//因为oldObj[k]是一个数组
- deepCopy(newObj[k],oldObj[k])//再次进行递归
- } else if(oldObj[k] instanceof Object) {
- newObj[k] = {}//因为oldObj[k]是一个对象
- deepCopy(newObj[k],oldObj[k])//再次进行递归
- } else {
- newObj[k] = oldObj[k]//简单的前拷贝
- }
-
-
- }
- }
-
- deepCopy(o,obj)