【前端面试】JS深拷贝

121 阅读1分钟
  • 使用递归实现深拷贝
function deepClone(obj) {
    if(typeof obj !== 'object' || obj == null) {
        return obj
    }
    let result = obj.constructor == Array ? [] : {}
    for(let key in obj) {
        if(obj[key] && typeof obj[key] == 'object') {
            result[key] = deepClone(obj[key])
        } else {
            result[key] = obj[key]
        }   
    }
    return result
}
  • Test
var test = {
    a: 1,
    b: ['bbb'],
    c: {ccc: 'ddd'}
}
var test1 = deepClone(test)
test.a = 2
test.b[0] = 'll'
test.c.ccc = 'kk'
console.log(test1)

image.png