栈与堆的定义

栈 stack为自动分配的内存空间,它由系统自动释放;
堆 heap则是动态分配的内存,大小不定也不会自动释放。
js数据类型
基本类型 undefined、null、string、number(注意:NaN)、boolean、symbol(ES6)
引用类型 Object(包括Array和Function)
基本数据类型存放在栈里,=:直接传值
引用数据类型存放在堆里,=:传址

浅/深拷贝
浅/深拷贝主要针对引用类型

对于基本数据类型而言: 不管声明还是赋值,都会在栈里创建新的变量
栈与堆,深拷贝与浅拷贝
对于引用类型而言:赋值只是为堆里的内容创建了新的指针,指向的却是同一份内容,所以不管修改那个指针的数据,其他的指针所指向的内容也会发生改变
栈与堆,深拷贝与浅拷贝
为了切断引用类型a和b的联系,所以我们需要浅/深拷贝
浅拷贝:一层拷贝
深拷贝:无限层拷贝

浅拷贝: 赋值、es6(assign,…对象展开符)数组的slice方法
深拷贝:

  1. [1 ]JSON.parse(JSON.stringify(arr)) JSON正反序列化
  2. 对象的create() 构造函数, 缺点是会吧时间格式转化为字符串
  3. 通过递归函数创建
    栈与堆,深拷贝与浅拷贝

相关文章:

  • 2021-11-14
猜你喜欢
  • 2021-12-15
  • 2021-04-01
相关资源
相似解决方案