深浅拷贝简记
(0)

数组和对象之间的赋值都是浅拷贝。因为会相互影响。
解构赋值在数组是一维数组时可以勉强看作是深拷贝,但是多维数组进行结构赋值依然是浅拷贝。
常用的深拷贝方法:
新数组=JSON.parse(JSON.stringify(数组))
将对象转换为json字符串形式再将转换而来的字符串转换为原生js对象
标准的深拷贝:

    function deepClone(source) {
        //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝
        const sourceClone = source.constructor === Array ? [] : {};
        for (let key in source) {
            if (source.hasOwnProperty(key)) {
                // 引用数据类型
                if (source[key] && typeof source[key] === "object") {
                    //sourceClone[key] = source[key].constructor===Array?[]:{};
                    //递归
                    sourceClone[key]=deepClone(source[keys])
                } else {
                    // 基本数据类型直接赋值
                    sourceClone[key] = source[key];
                }
            }
        }
        return sourceClone      
    }
本文为作者valive发布,未经允许禁止转载!
上一篇 下一篇
评论
评论已关闭 >_<

评论已关闭