js递归实现深拷贝
2021-02-13 04:22
标签:lse function 深拷贝 else nbsp type ceo class 实现 js递归实现深拷贝 标签:lse function 深拷贝 else nbsp type ceo class 实现 原文地址:https://www.cnblogs.com/kirkor-sort/p/13022427.html 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 }