深拷贝浅拷贝的区别?如何实现一个深拷贝?

48 阅读1分钟

浅拷贝是拷贝一层,属性为对象时,浅拷贝是复制,两个对象指向同一个地址

深拷贝是递归拷贝深层次,属性为对象时,深拷贝是新开栈,两个对象指向不同的地址

浅拷贝和深拷贝最根本的区别就是存储区域是否指向同一个地址,当声明一个对象时,计算机会在内存上分配一个地址给它,当你把这个对象付给另外一个变量的时候,这时候就会出现浅拷贝和深拷贝的情况,指向同一内存为浅拷贝,不同内存为深拷贝、

  •    Json方法实现  对象的属性值是函数时,无法拷贝。原型链上的属性无法拷。不能正确的处理 Date 类型的数据

  •    Lodash

  •    递归实现:要定义一个方法,那么这个方法最终应该返回一个深拷贝的数据

  • 既然要返回一个数据,我们首先就要定义一个数据,但是数据是对象还是数组?所以需要判断,如果要拷贝的数据是数组,即定义一个数组,如果是一个对象,即定义一个对象

  • 方法里面怎么拷贝啊?还是一样的利用 for in 循环,在循环内部,需要判断,如果是类型是简单类型,直接拷贝,如果是引用类型,就需要在一次的将引用类型里面的值取出来