前言:
在学习JavaScript基础篇提到深度克隆与浅度克隆,最近在云栖社区看到有另一种深度克隆写法,因此记下笔记。
实现思路:
利用ES6的数组原方法Array.isArray判断数据类型。
如果是引用数据类型循环递归判断,否则输出。
代码片段:1
2
3
4
5
6
7
8
9
10
11
function deepClone(origin){
var newObj = (Array.isArray(origin)) ? [] : {};
for(var key in origin){
newObj[key] = (typeof origin[key] == 'object')
? deepClone2(origin[key])
: origin[key];
}
return newObj;
}