本文已参与「新人创作礼」活动,一起开启掘金创作之路。
使用递归
1.检查传递的对象是否null,如果是,返回null
2.使用Object.assign()和空对象创建初始的浅层克隆
3.使用Object.keys()和Array.prototype.forEach()确定需要的深度克隆的键值对
4.如果对象是一个Array,设置clone和length,使用Array.from 创建一个克隆
const deepClone
代码如下
const deepClone = (obj) => {
if (obj === null) return null
let clone = Object.assign({}, obj)
console.log('clone: ', clone);
Object.keys(clone).forEach((key) => {
return clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]
})
if (Array.isArray(obj)) {
clone.length = obj.length
return Array.from(clone)
}
return clone
}