美文网首页
深拷贝与浅拷贝demo

深拷贝与浅拷贝demo

作者: 仙人灬掌 | 来源:发表于2018-12-10 22:17 被阅读0次

利用递归函数实现这样的一个demo     

直接上代码  

 var obj = {

            a:111,

            b:222,

            c:[1,2,{aaa:1,bbb:2}],

            d:{

                aa:111,

                bb:222,

                cc:[1,2,3]

            }

        }

        var newobj = {}

        function checkarray(para){

            return Array.isArray(para);

        }

        function checkobject(para){

            return (para instanceof Object);

        }

        function copy(obj){

            var cc = {};

            function checksz(para){

                var aa = [];

                for(var cell in para){

                    if(Array.isArray(para[cell])){

                        aa[cell] = checksz(para[cell]);

                    }else if(para[cell] instanceof Object){

                        aa[cell] = checkdx(para[cell]);

                    }else{

                        aa[cell] = para[cell]

                    }

                };

                return aa;

            }

            function checkdx(para){

                var bb = {};

                for(var cell in para){

                    if(Array.isArray(para[cell])){

                        bb[cell] = checksz(para[cell]);

                    }else if(para[cell] instanceof Object){

                        bb[cell] = checkdx(para[cell]);

                    }else{

                        bb[cell] = para[cell]

                    }

                }

                return bb;

            }

            for(var cell in obj){

                if(checkarray(obj[cell])){

                    cc[cell] = checksz(obj[cell]);

                }else if(checkobject(obj[cell])){

                    cc[cell] = checkdx(obj[cell]);

                }else{

                    cc[cell] = obj[cell];

                }

            }

            return cc;

        }

        var newobj = copy(obj);

        console.log(obj);

        console.log(newobj);

相关文章

网友评论

      本文标题:深拷贝与浅拷贝demo

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