浅拷贝和深拷贝的区别(详解)
程序员文章站
2022-03-12 21:17:28
今天小编给你们讲讲浅拷贝跟深拷贝吧!欢迎可爱的你们来看看,互相学习喔!浅拷贝和深拷贝最根本的区别就是是否真正获取一个对象的复制实体,而不是引用;简单来说浅拷贝就是一个改变,另一个也会变,只拷贝一层对象的属性。深拷贝就是两个对象对应两个不同的地址,修改一个对象的属性,另一个不会改变。(文字多了就会不想看了,我们来展示代码吧)浅拷贝还用代码来展示吗算了来一段吧哈哈var obj1={"name":"隔壁老王"}; var obj2 = obj1; obj1.name =...
今天小编给你们讲讲浅拷贝跟深拷贝吧!
欢迎可爱的你们来看看,互相学习喔!
浅拷贝和深拷贝最根本的区别就是是否真正获取一个对象的复制实体,而不是引用;
简单来说浅拷贝就是一个改变,另一个也会变,只拷贝一层对象的属性。
深拷贝就是两个对象对应两个不同的地址,修改一个对象的属性,另一个不会改变。(文字多了就会不想看了,我们来展示代码吧)
浅拷贝还用代码来展示吗算了来一段吧哈哈
var obj1={"name":"隔壁老王"};
var obj2 = obj1;
obj1.name ="隔壁老李";
console.log("obj1",obj1);
console.log("obj2",obj2);
一个改变另一个也会变
递归-深拷贝
var obj={
"name":"隔壁老王",
"age":13,
"list":{"title":"新闻"}
}
function deepCopy(obj){
var copyobj={} //创建新对象
for( var key in obj ){
if( obj.hasOwnProperty(key)==true ){ //判断对象自身是否存在属性
if( obj[key] instanceof Object ){ //判断属性值是不是对象
copyobj[key]=deepCopy(obj[key]) //是的话赋值
}else{
copyobj[key]=obj[key] //是的话赋值
}
}
}
return copyobj //返回对象
}
var obj2=deepCopy(obj) //递归赋值新对象
obj.list.title="娱乐" //修改对象属性
console.log('obj :>> ', obj); //一个改变,另一个不会变
console.log('obj2 :>> ', obj2);
展示效果
帮助到你们给小姐姐点赞评论喔~
本文地址:https://blog.csdn.net/Liang_nm/article/details/112585110