js深拷贝和浅拷贝以及实现深拷贝的方法

前言

为啥写这个?因为项目中遇到了,就记录一下。

如何区分深拷贝与浅拷贝

简单来说就是:假设B复制了A,当修改A/B时,看A/B是否会发生变化,如果A/B也跟着变了,说明是浅拷贝,如果A/B没变,那是深拷贝。深拷贝与浅拷贝出现的根源就在于引用数据类型、内存地址。(这里需要了解一下 堆栈、数据类型
深拷贝: 是在A/B计算机中分别开辟了一块内存地址 用于存放复制的对象。
浅拷贝: 是一个引用传递而不是值传递,A和B指向的是同一个 内存地址 。

如何把浅拷贝变为深拷贝

1、最简单方式:先转换成字符串,然后在转换成对象; JSON.parse(JSON.stringify())
2、就是用递归去复制所有层级属性

遇到的场景

在vue中:this.A = this.B;就是B赋值A,然后我只想改变A;但是呢,我改A的时候B也变了;哈哈哈···,我就用了JSON.parse(JSON.stringify())

猜你喜欢

转载自blog.csdn.net/weixin_44897255/article/details/106721760