深入浅出理解 . 深拷贝 . 浅拷贝
前言 百科定义:拷贝就是拷贝指向对象的 指针 ,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的时候,指向这个内存空间的所有指针需要重新定义,不然会造成指针错误。 拷贝内容总结 数据类型与堆栈的关系 基本类型与引用类型 . 基本类型:undefined,null,Boolean,String,Number,Symbol . 引用类型:Object,Array,Date,Function,RegExp等 存储方式 . 基本类型:基本类型值在内存中占据固定大小,保存在栈内存中(不包含闭包中的变量) . 引用类型:引用类型的值是对象,保存在堆内存中。而栈内存存储的是对象的变量标识符以及对象在堆内存中的存储地址(引用),引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。 . 注意: 闭包中的变量并不保存在栈内存中,而是保存在堆内存中。这一点比较好想,如果闭包中的变量保存在了栈内存中,随着外层中的函数从调用栈中销毁,变量肯定也会被销毁,但是如果保存在了堆内存中,内存函数仍能访问外层已销毁函数中的变量。看一段对应代码理解下: function A() { let a = 'koala' function B() {