说到深拷贝 我们不得不先说说基本数据类型(string boolean number null undefined) 和引用数据类型(array function object)的存储方式.
1.基本数据类型--名值存储在栈内存
2.引用数据类型--名存在栈内存中,值存在于堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值。
所以当浅拷贝引用数据类型只是在栈内存复制了其指向堆内存的地址。
例如 b=a 其实复制的是a的引用地址,而并非堆里面的值。
因此深拷贝主要在于 在堆内存里也开辟一个新的内存存放b的值
这样就能到达深拷贝的效果。
深拷贝方法一.项目中常用的方法
function deepClone(obj){
let _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone
}
方法二.递归
export default {
name: "Main",
data() {
return {
obj1: {
name: "weiqiujuan",
sex: "girl",
age: 22,
favorite: "play",
family: {
brother: "son",
mother: "haha",
father: "heihei"
},
},
};
},
methods: {
goCopy() {
let obj2 = this.deepClone(this.obj1);
this