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)
浅谈js最基础的 浅拷贝和 深拷贝
原文地址:https://www.cnblogs.com/adi99/p/9956638.html