美文网首页
小白的JS之路--深拷贝

小白的JS之路--深拷贝

作者: 阿古瓜 | 来源:发表于2018-07-18 17:24 被阅读0次

    一. 先从浅拷贝开始

    function clone(obj){
        var clone = Array.isArray(obj)?[]:{};
        if(obj && typeof obj==="object"){
            for( var property in obj){
                clone[property] = obj[property];
            }
            return clone;
        } else {
            return obj;
        }
    }
    

    二.开始我们真正的深拷贝

    // 一.用递归实现的深拷贝 
    function deepClone(obj){
        let objClone = Array.isArray(obj)?[]:{};
        if(obj && typeof obj==="object"){
            for(key in obj){
                if(obj.hasOwnProperty(key)){
                    //判断ojb子元素是否为对象,如果是,递归复制
                    if(obj[key]&&typeof obj[key] ==="object"){
                        objClone[key] = deepClone(obj[key]);
                    }else{
                        //如果不是,简单复制
                        objClone[key] = obj[key];
                    }
                }
            }
        }
        return objClone;
    } 
    
    // 二.用JSON对象的parse和stringify实现的深拷贝
    function deepClone(obj){
        let _obj = JSON.stringify(obj),
            objClone = JSON.parse(_obj);
        return objClone
    }  
    

    相关文章

      网友评论

          本文标题:小白的JS之路--深拷贝

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