数据类型:
基本数据类型(String、Number、Boolean、Null、Undefined、Symbol (es6)
引用数据类型(Object、Array、Function)
基本数据类型是储存在栈中的,而引用数据类型是储存在堆中的在栈里面储存的只是她的指针指向堆中的地址
深拷贝与浅拷贝
深拷贝主要是针对引用数据类型的,使用浅拷贝复制数据的话只是复制了一个指针,内部数据的改变会影响原来的对象。就是浅拷贝只是拷贝了引用对象在栈中的地址,只有第一层才是深拷贝,第二层数据的改变会影响原来的数据。
数组对象里面的Object.assign(),Array.prototype.concat(), Array.prototype.slice()
实现的就是浅拷贝。
针对数组和对象可以实现深拷贝的方法有:
JSON.parse(JSON.stringify())先把数据转换成JSON字符串在转换回来就可以实现深拷贝
这种方法对于方法来说不能实现深拷贝拷贝出来的对象是null
也可以使用递归的方法遍历数组创建新数组,或者使用lodash的cloneDeep()实现深拷贝