浅拷贝

只拷贝第一层,更深层次的数据对象只拷贝引用地址 如果改变了拷贝后的数据,原数据也会修改

  • Object.assign(newObj, oldObj);

深拷贝

  1. // 封装函数
  2. function deepClone(newObj, oldObj) {
  3. for(let k in oldObj) {
  4. const item = oldObj[k];
  5. if (item instanceof Array) {
  6. newObj[k] = [];
  7. deepClone(newObj[k], item);
  8. } else if (item instanceof Object) {
  9. newObj[k] = {};
  10. deepClone(newObj[k], item);
  11. } else {
  12. newObj[k] = item;
  13. }
  14. }
  15. }