美文网首页
js实现深拷贝

js实现深拷贝

作者: 5cc9c8608284 | 来源:发表于2022-07-12 15:07 被阅读0次

    1.官方新推出的structuredClone方法,可以直接实现对一个对象的深拷贝,首选,兼容性还不是很友好,IE目前还没有支持
    2.递归实现深拷贝

    //函数拷贝
    const copyObj = (obj = {}) => {
        //变量先置空
        let newobj = null;
    
        //判断是否需要继续进行递归
        if (typeof (obj) == 'object' && obj !== null) {
            newobj = obj instanceof Array ? [] : {};
            //进行下一层递归克隆
            for (var i in obj) {
                newobj[i] = copyObj(obj[i])
            }
            //如果不是对象直接赋值
        } else {
            newobj = obj
        }
    
        return newobj;
    }
    
    let o1 = {
        name: 'o1',
        friends: {
            name: 'Ann'
        }
    }
    let o2 = copyObj(o1);
    console.log(o2.friends == o1.friends); //false
    

    3.使用JSON.stringify将对象转换为字符串,然后再通过JSON.parse还原对象

    这个方法要慎重使用,它在处理date对象和NaN,undefined和null还有函数类型的时候,会出错,具体可以参考这篇文章

    4.使用lodash的cloneDeep方法

    相关文章

      网友评论

          本文标题:js实现深拷贝

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