一、什么是深浅拷贝?
在了解深拷贝之前,应该先了解以下2个概念:
传值:表示传递的是变量所赋的值,简单来说:就是相当于把变量的值全新复制了一份。当一个变量的值赋给另一个新变量的时候,新变量修改了值,不会影响原来变量的值。
传址: 表示传递的是变量所在的内存地址(也就是指针),简单来说:就是类似给变量起了一个新的名字,但实际上还是原来的。由于都是一样内存地址,则一改都改。
二、浅拷贝
1.Object.assign
很多人认为这个函数是用来深拷贝的。其实并不是, Object.assign 只会拷贝所有的属性值到新的对象中,如果属性值是对象的话,拷贝的是地址,所以并不是深拷贝。
let a = {
age: 1
}
let b = Object