美文网首页
对象的深浅拷贝

对象的深浅拷贝

作者: 关耳木南 | 来源:发表于2019-07-09 17:47 被阅读0次

    浅拷贝:只做一层拷贝,问题:如果对象的某个属性是引用类型,就会出现问题。
    深拷贝:遇到某一条属性是引用类型,也会拷贝过来,但是引用地址是不一样的。

    <script type="text/javascript"> 
        const obj = {
            a:1,
            b:["a","b"]
        }
        function extend(o1,deep){//deep为true是深拷贝
            var obj = {};
            if(o1 instanceof Array){
                obj = []
            }
            for(var key in o1){
                var value = o1[key];
                //确定value是不是引用类型,前提是deep:true
                obj[key] = (!!deep && typeof value==="object" && value !== null) ? extend(value,deep) : value 
            }
            return obj
        }
        const obj2 = extend(obj,true);
        obj2.b.push("c");
        console.log(obj);
        console.log(obj2);
    </script>
    
    1.jpg
    //另一种拷贝
        
        const obj3 = {
            a:1,
            b:["a","b"]
        }
        const obj4 = JSON.parse(JSON.stringify(obj3));
    
        obj4.b.push("c");
        console.log(obj3);
        console.log(obj4);
    
    1.jpg

    相关文章

      网友评论

          本文标题:对象的深浅拷贝

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