浅谈js最基础的 浅拷贝和 深拷贝

1.浅拷贝 就是一个对象的 值类型的复制

    var dog = {
        name : '小黄',
        // bark : function(){
        //     console.log('汪汪汪!')
        // },
        son :{
            name: '小小黄'
        }
    }
    var dog1 = {}
    for(var k in dog){
        dog1[k] = dog[k];
    }
   dog1.name = "小黑"
   console.log(dog.name)/* 小黄*/
   console.log(dog1.name) /*小黑 浅拷贝 对象的属性拷贝 值类型复制*/

//dog1有了dog 的属性且成为了自己的私有属性

2.深拷贝 就是一个对象的 值类型 和引用类型的 复制

     var dog = {
        name : '小黄',
        // bark : function(){
        //     console.log('汪汪汪!')
        // },
        son :{
            name: '小小黄'
        }
    }  
var dog2 = {}
 for(var k in dog){
        if(typeof(dog[k]) == 'object'){
            var temp = {}
            for(var j in dog[k]){  
                temp[j] = dog[k][j]              
            }
            dog2[k] =temp
        }else{
            dog2[k] = dog[k];
        }
    }
    dog2.son.name = "小小黑"
    console.log(dog.son.name)  /*深拷贝 对象中引用类型的复制*/
    console.log(dog2.son.name)

posted @ 2018-11-14 10:34  我是阿弟  阅读(66)  评论(0)    收藏  举报