js浅拷贝

最近做一些抽奖活动产品化工具时,遇到了需要不断复用原始数据的场景,修改获取到的数据又不能破坏原始数据的初始化状态。那怎么能使用最少的代码做到了。

引用数据类型的概念

首先我们了解JS的引用数据类型的概念,比如数组Array,它们值的大小是不固定的。引用数据类型的值是保存在堆内存中的对象。JavaScript不允许直接访问堆内存中的位置,因此我们不能直接操作对象的堆内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。因此,引用类型的值都是按引用访问的。这里的引用,我们可以理解为保存在变量对象中的一个地址,该地址与堆内存的实际值相关联。因此当我们要访问堆内存中的引用数据类型时,实际上我们首先是从变量对象中获取了该对象的地址引用(或者地址指针),然后再从堆内存中取得我们需要的数据(来自《这波能反杀》)

接下来我们直接看代码

var obj = {a:1, b:2, c:3} ;

var newObj = JSON.parse(JSON.stringify(Object.assign({}, obj )))

newObj.a = 4;

console.log(newObj.a)  // 4

console.log(obj.a)  // 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容