栈与堆的定义
栈 stack为自动分配的内存空间,它由系统自动释放; 堆 heap则是动态分配的内存,大小不定也不会自动释放。 js数据类型 基本类型 undefined、null、string、number(注意:NaN)、boolean、symbol(ES6) 引用类型 Object(包括Array和Function) 基本数据类型存放在栈里,=:直接传值 引用数据类型存放在堆里,=:传址
浅/深拷贝 浅/深拷贝主要针对引用类型
对于基本数据类型而言: 不管声明还是赋值,都会在栈里创建新的变量 对于引用类型而言:赋值只是为堆里的内容创建了新的指针,指向的却是同一份内容,所以不管修改那个指针的数据,其他的指针所指向的内容也会发生改变 为了切断引用类型a和b的联系,所以我们需要浅/深拷贝 浅拷贝:一层拷贝 深拷贝:无限层拷贝
浅拷贝: 赋值、es6(assign,…对象展开符)数组的slice方法 深拷贝:
[1 ]JSON.parse(JSON.stringify(arr)) JSON正反序列化对象的create() 构造函数, 缺点是会吧时间格式转化为字符串通过递归函数创建