深度克隆对象

实现一

function deepClone(obj){
    var newObj=obj instanceof Array ? [] : {};
    
    for(let key in obj){
        newObj[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]
    }
    
    return newObj
}

实现二
考虑到内置包装对象Date、RegExp

function deepClone(obj){
    if(obj === null){
        return obj
    }

    if(typeof obj !== 'object'){
        return obj
    }
    
    if(obj instanceof Date){
        return new Date(obj)
    }
    
    if(obj instanceof RegExp){
        return new RegExp(obj)
    }
    
    // 非null情况下的typeof obj === 'object'处理方式
    var newObj=new obj.constructor;
    
    for(let key in obj){
        newObj[key]=deepClone(obj[key]);
    }    
    
    return newObj
}

你可能感兴趣的:(javascript)