JS中的堆和栈
2020-12-22 18:26
标签:ring === color return 获取数据 个数 指针 class 它的 堆(heap):动态分配内存,大小不一,不自动分配。 栈(stack):自动分配相对固定大小的内存空间,有系统自动释放。 Array、Object、Function。。。 JavaScript中基本数据类型:Undefined、Null、Number、String、Boolean、Symbol。 直接按值存储在栈内存中,方便内存管理以及内存回收。 JavaScript中的引用数据类型:Array、Object、Function...。它们的地址指针存储在栈中,本身存储于堆中。当引用一个数组时,首先去栈中获取它的地址指针然后在堆中获取数据。 由此引出了浅拷贝(shallowCopy)与深拷贝(deepCopy)。 浅拷贝是指针地址的复制,深拷贝是另外开辟了一块内存地址进行复制。 深拷贝的一个实现: JS中的堆和栈 标签:ring === color return 获取数据 个数 指针 class 它的 原文地址:https://www.cnblogs.com/zs96/p/14147811.html let deepCopy = function(val){
let result = Array.isArray(val)?[]:{}
for(let key in val){
if(val.hasOwnProperty(val)){//忽略继承方法,暂时不知道用到哪里
if(val[key] && typeof val[key] === "object"){
result[key]=deepCopy(val[key])
}else{
result[key]=val[key]
}
}
}
return result
}