JS的深拷贝和浅拷贝

浅拷贝

  • 重新再堆中创建内存,拷贝前后对象的基本数据类型互不影响
  • 只拷贝一层,不能对对象中的子对象进行拷贝

深拷贝

  • 对对象中的子对象进行递归拷贝
  • 拷贝前后的两个对象互不影响

基本数据类型的值是不可变的,动态修改了基本数据类型的值,它的原始值也是不会改变的

比较两个引用类型,是看其的引用是否指向同一个对象。

传值与传址

基本数据类型的赋值(=)是在内存中新开辟一段栈内存,然后再把再将值赋值到新的栈中。

引用类型的赋值是传址。只是改变指针的指向,例如,也就是说引用类型的赋值是对象保存在栈中的地址的赋值,这样的话两个变量就指向同一个对象,因此两者之间操作互相有影响。


js浅拷贝vs深拷贝

javascript中的深拷贝和浅拷贝

你可能感兴趣的:(JS的深拷贝和浅拷贝)