前言JS 中的数据类型可分为两种:基本类型:undefined,null,Boolean,String,Number,Symbol引用类型:Object,Array,Date,Function,RegExp等不同类型的存储方式:基本类型:基本类型值在内存中占据固定大小,保存在栈内存中引用类型:引用类型的值是对象,保存在堆内存中,而栈内存中存储的是对象的变量标识符以及对象在堆内存中的存储地址不同类型的复制方式:基本类型:从一个变量向另外一个新变量复制基本类型的值,会创建这个值的一个副本,并将该副本复制给新变量引用类型:从一个变量向另一个新变量复制引用类型的值,其实复制的是储存地址,最终两个变量最终都指向同一个对象深浅拷贝的区别浅拷贝:仅仅是复制了引用,彼此之间的操作会互相影响深拷贝:在堆中重新分配内存,不同的地址,相同的值,互不影响浅拷贝对象的浅拷贝是属性与拷贝的源对象属性共享相同的引用(指向相同的底层值)的副本。因此,当你更改源对象或副本时,也可能导致另一个对象发生更改。与之相比,在深拷贝中,源对象和副本是完全独立的。赋值function shallowClone(object) {
// 只拷贝对象
if (!object) return object
// 根据 object 的类型判断是新建一个数组还是对象
const newObject = Array.i
...
继续阅读
(3)