关于堆栈,深拷贝,浅拷贝的理解
栈:
1.自动分配内存空间,存基本数据,占据一定的内存大小
2.先进后出,就像水杯里的水
3.特点:存取速度快,但是不灵活;因为结构简单,所以在变量使用完成后,就可以释放,内存回收容易实现
堆:
1.存引用类型的值。但是会在栈中开辟一定的空间,存储相应的堆中的地址
2.先进先出,就像水管
3.特点:使用灵活,可以动态增加或删除空间,但是存取比较慢
浅拷贝:基本类型数据的复制,引用类型直接复制(拷贝的是内存地址)
深拷贝:将对象从内存中 完整的拷贝一份出来,从堆内存中开辟一个新的区域存放 新对象,两个对象相互独立
常用方法: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}
本文来自博客园,作者:cmwang2017,转载请注明原文链接:https://www.cnblogs.com/bm20131123/p/12881579.html