实现深拷贝

17 阅读1分钟
function copy(obj) {
    // 判断如果是基本类型就返回
    if (typeof obj !== 'object') return obj
    // 判断是数组还是对象
    const newObj = Array.isArray(obj) ? [] : {}
    for(let key in obj) {
        newObj[key] = copy(obj[key]) // 自己调用自己,递归
    }
    return newObj
}
// 验证
const obj = {
    name: 'li',
    age: 18,
    arr: [1, 2, 3]
}
const result = copy(obj)
console.log(result) 
console.log(result.arr === obj.arr) // false