这篇文章主要介绍js中深拷贝和浅拷贝的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言。它主要用来给HTML网页添加动态功能,现在JavaScript也可被用于网络服务器,如Node.js。
在JavaScript中,变量的类型有基本类型和引用类型两种类型。我们对基本类型的复制操作是对值进行拷贝,对引用类型的复制则是拷贝地址。这中间都是通过深拷贝与浅拷贝实现的。
深拷贝:
1、将数据中所有的数据赋值过去,无限层级拷贝,,每一级别的数据都会拷贝出来;
2、所有元素或属性均完全复制,与原对象完全脱离;
3、在堆中重新分配内存, 将源对象的各个属性复制进去.;
4、拷贝后,修改拷贝后的对象,不影响之前的对象。
function test(obj){ let _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone } var tal = {name:'lili'}; Cal=test(tal); Cal.name = 'kiki'; console.log(tal,Cal); //{name: "lili"} {name: "kiki"}
浅拷贝:
1、将原有的数据赋值过去,只进行一层拷贝,深层次的对象级别的就拷贝引用;
2、原始类型为值传递,对象类型仍为引用传递。;
3、是拷贝引用, 拷贝后的引用都是指向同一个存放数据位置的指针,;
4、拷贝后,修改拷贝后的对象,会影响拷贝前的对象。
var a = [1,2,3,4,5]; var b = a; a[0] = 6; console.log(a,b); //代码运行结果:a:[6,2,3,4,5] b:[6,2,3,4,5]
以上是“js中深拷贝和浅拷贝的区别有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。