JavaScript递归实现对象深拷贝


   let personOne = {
            name:"张三",
            age:18,
            sex:"male",
            children:{
                first:{
                    name:"zhang",
                    age:13
                },
                second:{
                    name:"小三"
                }
            },
            car:['benz','mazda']
        }

        let personTwo = deepClone(personOne);
        personTwo.car.push([1,2,3]);
        personTwo.children.fron = {
            name:'xiao'
        }
        console.log(personOne,personTwo);

        //对象深拷贝
        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;
        }
       

希望能够帮助到你们!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM