首先深拷贝与浅拷贝 只针对Object 和Array这样的引用数据类型
所以基本数据类型不用考虑了
等号赋值
基本数据类型
对于基本数据类型,就会创建一个新的变量,并将原变量的值复制给新变量。
这是基于变量是存储在栈内存中的特点。简单来说,等号赋值只是简单地将右边的值复制给左边的变量,它们之间是独立的。
引用类型
本质上是将对象的指针复制给另一个对象,不复制对象本身,还是公用内存,就是牵一发动全身
let name = ['slx','ling']
let name2 = name
name2[0] = 'ssss'
console.log('name2',name2);
console.log('name',name);
浅拷贝
浅拷贝是一种复制对象的方法,它会复制对象的引用,而不是对象本身。也就是说,浅拷贝会创建一个新对象,但新对象中的属性仍然指向原对象的地址。因此,如果修改新对象中的属性,原对象也会受到影响。浅拷贝只复制了对象的第一层属性,而不会递归复制嵌套的对象。
深拷贝
深拷贝是一种复制对象的方法,它会递归地复制所有层级的属性,创建一个完全独立的新对象。深拷贝不仅复制了对象本身,还会复制对象内部的所有嵌套对象和属性。这意味着,深拷贝后的对象和原对象是完全独立的,互相之间不会有任何关联。