美文网首页
手写深拷贝函数

手写深拷贝函数

作者: 青春向来如此 | 来源:发表于2020-04-05 13:42 被阅读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);

相关文章

  • 深入JavaScript Day33 - 序列化实现深拷贝的缺点

    一、序列化实现深拷贝的缺点、手写深拷贝 1、借助序列化实现深拷贝,有哪些缺点? ①不能拷贝函数 ②不能拷贝Symb...

  • 手写深拷贝函数

  • 前端手写

    节流 防抖 用xhr手写axios 函数柯里化 手写promise 手写reduce new 深拷贝 string...

  • C++语言基础(02)

    1.可变参数 2.构造函数、析构函数、拷贝构造函数 构造函数 拷贝构造函数 //浅拷贝(值拷贝)问题 //深拷贝

  • 手写深拷贝

    什么是深拷贝? 简单理解:b是a的一份拷贝,b中没有对a中对象的引用。另一种理解:b是a的一份拷贝,把b和a各画出...

  • 手写深拷贝

    注意:Object.assign()不是深拷贝 语法:Object.assign(target, ...sourc...

  • 手写深拷贝

    手写深拷贝 深拷贝 深拷贝简单理解就是b是a的一份拷贝,且b中不存在a中对象的引用 深拷贝的实现 1.JSON序列...

  • 手写深拷贝

    1. 简述深拷贝 JavaScript 中有2种变量类型:值类型(基本类型)和引用类型。深拷贝和浅拷贝都是针对引用...

  • 深拷贝(手写)

  • 手写深拷贝

    深拷贝

网友评论

      本文标题:手写深拷贝函数

      本文链接:https://www.haomeiwen.com/subject/jlduphtx.html