js递归实现深拷贝

Posted kirkor-sort

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js递归实现深拷贝相关的知识,希望对你有一定的参考价值。

 1         // 深拷贝
 2       function cloneDeep(obj) {
 3         // 3.根据obj为对象或者数组,产生一个空的对象或数组,存放数据
 4         var newobj = obj instanceof Array ? [] : {},
 5         // 1.for...in进入循环
 6         for (var k in obj) {
 7           // 2.判断对象的第一个属性是否为数组或者对象,如果是,则进入递归
 8           // if (obj[k] instanceof Array) {
 9           //   newobj[k] = cloneDeep(obj[k])
10           // } else if (obj[k] instanceof Object) {
11           //   newobj[k] = cloneDeep(obj[k])
12           // }
13           // 4.上面两个执行逻辑一样,进行合并
14           if (typeof obj[k] === ‘object‘) {
15             newobj[k] = cloneDeep(obj[k])
16           } else {
17             // 5.如果数据为基本类型,则直接赋值
18             newobj[k] = obj[k]
19           }
20         }
21         // 6.把存放了数据的新对象返回出去
22         return newobj
23       }    

 

以上是关于js递归实现深拷贝的主要内容,如果未能解决你的问题,请参考以下文章

js递归实现深拷贝

js运用递归实现浅拷和深拷贝

用原生JS实现深拷贝

用原生JS实现深拷贝

JS 中深拷贝的几种实现方法

JS实现深拷贝