JavaScript中如何准确区分深拷贝与浅拷贝的细微差别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1441个文字,预计阅读时间需要6分钟。
前言:在开发过程中,偶尔会遇到这种场景,拿到一个数据后,你会对其进行处理,但随后又希望复制一份副本出来,以便方便地对比数据和恢复数据。那么,如何在JS中对数据进行复制处理呢?
前言
在开发过程中,偶尔会遇到这种场景,拿到一个数据后,你打算对它进行处理,但是你又希望拷贝一份副本出来,方便数据对比和以后恢复数据。
那么这就涉及到了 JS 中对数据的深浅拷贝问题,所谓深浅拷贝,浅拷贝的意思就是,你只是复制了对象数据的引用,并没有把内存里的值另外复制一份,那么深拷贝就是把值完整地复制一份新的值。
下面这篇文章就对js中的深浅拷贝进行了深入的讲解,下面话不多说了,来一起看看详细的介绍吧
问题描述:
因为在JavaScript中对象在赋值中存储的是对象的地址(指针),所以会造成对象类型在复制过程中只复制对象的地址,从而导致以下问题
var people = { name: "小明" } var peoplea = people; peoplea.name = "小白"; console.log(peoplea.name)//小白 console.log(people.name)//小白
我们本来期望只改变peoplea的name,现在连people的name都改变了。根据情况的不同,可使用深拷贝或浅拷贝来解决。
本文共计1441个文字,预计阅读时间需要6分钟。
前言:在开发过程中,偶尔会遇到这种场景,拿到一个数据后,你会对其进行处理,但随后又希望复制一份副本出来,以便方便地对比数据和恢复数据。那么,如何在JS中对数据进行复制处理呢?
前言
在开发过程中,偶尔会遇到这种场景,拿到一个数据后,你打算对它进行处理,但是你又希望拷贝一份副本出来,方便数据对比和以后恢复数据。
那么这就涉及到了 JS 中对数据的深浅拷贝问题,所谓深浅拷贝,浅拷贝的意思就是,你只是复制了对象数据的引用,并没有把内存里的值另外复制一份,那么深拷贝就是把值完整地复制一份新的值。
下面这篇文章就对js中的深浅拷贝进行了深入的讲解,下面话不多说了,来一起看看详细的介绍吧
问题描述:
因为在JavaScript中对象在赋值中存储的是对象的地址(指针),所以会造成对象类型在复制过程中只复制对象的地址,从而导致以下问题
var people = { name: "小明" } var peoplea = people; peoplea.name = "小白"; console.log(peoplea.name)//小白 console.log(people.name)//小白
我们本来期望只改变peoplea的name,现在连people的name都改变了。根据情况的不同,可使用深拷贝或浅拷贝来解决。

