码迷,mamicode.com
首页 > Web开发 > 详细

JS中的堆和栈

时间:2020-12-22 11:56:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ring   ===   color   return   获取数据   个数   指针   class   它的   

堆(heap):动态分配内存,大小不一,不自动分配。

栈(stack):自动分配相对固定大小的内存空间,有系统自动释放。

Array、Object、Function。。。

 

JavaScript中基本数据类型:Undefined、Null、Number、String、Boolean、Symbol。  直接按存储在栈内存中,方便内存管理以及内存回收。

JavaScript中的引用数据类型:Array、Object、Function...。它们的地址指针存储在栈中,本身存储于堆中。当引用一个数组时,首先去栈中获取它的地址指针然后在堆中获取数据。

 

由此引出了浅拷贝(shallowCopy)与深拷贝(deepCopy)

浅拷贝是指针地址的复制,深拷贝是另外开辟了一块内存地址进行复制。

 

深拷贝的一个实现:

    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
       }

 

JS中的堆和栈

标签:ring   ===   color   return   获取数据   个数   指针   class   它的   

原文地址:https://www.cnblogs.com/zs96/p/14147811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!