手写深拷贝函数

2020-04-05  本文已影响0人  青春向来如此
const a = {
    a:1,
    b:{b:1},
    c:[1,2,3],
    d(){
        console.log('d');   
    },
    e:{
        a:[1,2],
        b:{bb:12},
        c(){console.log('cc');
        }
    }
}
const deepClone = (value) => {
    if(value instanceof Array){
        const res = []
        for (const item of value) {
            res.push(deepClone(item))
        }
        return res
    }else if(typeof value === 'function'){
       return value
    }
    else if(value instanceof Object){
        const res = {}
        for (const key in value) {
            res[key] =deepClone(value[key]) 
        }
        return res
    }else{
        return value
    }
}


const b = deepClone(a)
console.log('res',b);
a.b.b = 2
console.log(b.b.b,a.b.b);
a.c.push('4')
console.log(b.c,a.c);
console.log(a.d);
a.e.a.push('3')
console.log(a.e.a,b.e.a);
a.e.b.c = 1
console.log(a.e.b,b.e.b);
上一篇 下一篇

猜你喜欢

热点阅读