js 深浅拷贝

还是京东的面试: 小姐姐问了一个深浅拷贝的问题,然鹅我不会。。
只能回来填坑了。。
整理一下:

js有基本类型和引用类型,当把对象赋给另一个对象的时候,修改被复制的对象的属性时,赋值的对象的属性也会被修改,这是因为对象存储的都是一块内存地址,也就是指向的都是同一内存,故修改时都会发生修改

浅复制:只会将对象的各个属性进行依次复制,并不会进行递归复制,而js存储对象都是存地址的,所以会导致引用。
简单的赋值就是浅拷贝。因为对象和数组在赋值的时候都是引用传递。赋值的时候只是传递一个指针。

深复制:它不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深复制的方法递归复制到新对象上。
深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。

你可能感兴趣的:(JavaScript)