栈:自动分配内存空间,存基本数据,占据一定的内存大小
堆:存引用类型的值。但是会在栈中开辟一定的空间,存储相应的堆中的地址
浅拷贝:基本类型数据的复制,引用类型直接复制(拷贝的是内存地址)
深拷贝:将对象从内存中 完整的拷贝一份出来,从堆内存中开辟一个新的区域存放 新对象,两个对象相互独立
常用方法:JSON.stringfy()
object.assign() 一层是深拷贝 二层后就是浅拷贝
// 一层深拷贝
var obj = {};
var source = {
a:1
};
let newobj = Object.assign(obj ,source)
source.a = 2;
console.log('source',source); //{a:2}
console.log('obj',obj); //{a:1}
console.log('newobj', newobj)
// 二层浅拷贝
var obj1 = {
a: {
b: 1
}
}
var obj2 = {};
Object.assign(obj2,obj1)
obj1.a.b = 2;
console.log('obj1',obj1); // {b:2}
console.log('obj2',obj2); //{b:2}