乐趣区

JavaScript递归实现对象深拷贝

1.JavaScript 递归实现对象深拷贝

JavaScript 递归实现对象深拷贝

        function deepClone(origin,target){
            //target 是否存在如果不存在创建空对象
            let tar = target || {},
            // 判断是否为引用数据类型
                toStr = Object.prototype.toString,
                arrType='[object Array]';

            for(let key in origin){
                // 剥离原型链的数据
                if(origin.hasOwnProperty(key)){
                    // 判断是否为引用数据类型 对象或数组
                    if(typeof(origin[key]) === 'object' && origin[key] !== null){if(toStr.call(origin[key]) === arrType ){tar[key] = [];}else{tar[key] = {};}
                        deepClone(origin[key],tar[key]);
                    }else{tar[key] = origin[key];
                    }
                }
            }
            return tar;
        }
退出移动版