深拷贝与浅拷贝

深拷贝与浅拷贝

浅拷贝

数组和对象的赋值都属于浅拷贝。

深拷贝

解构赋值一维数组是深拷贝,多维数组浅拷贝:[...arr];

用法:

  1. JSON.parse(JSON.stringfy(list));

  2. 标准的深拷贝代码:专门针对于引用数据类型(数组和对象)

    function deepClone(source){
        // [] => Array; {} => Object
        const targetObj = source.constructor === Array ? [] : {};
        for(let keys in targetObj){
            if(source.hasOwnProperty(keys)){
                // 判断数据类型是基本数据类型或者引用数据类型
                if(source[keys] && typeof source[keys] === 'object'){
                    // 维护层代码
                    targetObj[keys] = source[keys].construcor === Array ? [] : {};
                    // 递归实现
                    targetObj[keys] = deepClone(source[keys]);
                } else {
                    // 基本数据类型,直接赋值
                    targetObj[keys] = source[keys];
                }
            }
        }
        return targetObj;
    }
    

上一篇:ES6常用数组方法及模拟实现


下一篇:检查文件列表,并排序