美文网首页
js深度复制

js深度复制

作者: 我是强强 | 来源:发表于2018-02-03 13:19 被阅读0次

    function extend(par,chil){

    var chil=chil||{};

        for(var keyin par)

    {

    if(par.hasOwnProperty(key))

    {

    chil[key]=par[key]

    }

    }

    return chil

    };

    var obj1={

    name:"lol",

        age:5,

        skills:[

    "mysql",'node','php','ps'

        ]

    };

    var obj2={

    say:"hello",

    };

    /*真正的深度复制*/

    function deep(par,chil){

    child=chil||{}

    for(var keyin par)

    {

    if(par.hasOwnProperty(key))

    {

    if(typeof par[key]==="object")

    {

    chil[key]=(Object.prototype.toString.call(par[key])==="[object Array]")?[]:{};

                    deep(par[key],chil[key])

    }

    else

                {

    chil[key]=par[key]

    }

    }

    };

        return chil;

    }

    function extendDeep(parent, child) {

    child = child || {};

        for(var iin parent) {

    if(parent.hasOwnProperty(i)) {

    //检测当前属性是否为对象

                if(typeof parent[i] ==="object") {

    //如果当前属性为对象,还要检测它是否为数组

                    //这是因为数组的字面量表示和对象的字面量表示不同

                    //前者是[],而后者是{}

                    child[i] = (Object.prototype.toString.call(parent[i]) ==="[object Array]") ? [] : {};

                    //递归调用extend

                    extendDeep(parent[i], child[i]);

                }else {

    child[i] = parent[i];

                }

    }

    }

    return child;

    }

    相关文章

      网友评论

          本文标题:js深度复制

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