赋值运算符不会创建一个对象的副本,它只分配一个引用
浅层拷贝
let objCopy = Object.assign({}, obj);
这就是 Object.assign()
的陷阱。Object.assign
只是浅拷贝。 newObj.b
和 obj.b
都引用同一个对象,没有单独拷贝,而是复制了对该对象的引用。任何对对象属性的更改都适用于使用该对象的所有引用。我们如何解决这个问题?
深层拷贝
let newObj = JSON.parse(JSON.stringify(obj));
不幸的是,此方法不能用于复制用户定义的对象方法