【笔记】JS实现对象拷贝

前言

JS实现对象拷贝

浅拷贝

通过展开运算符(ES6)

1
2
3
const oldObj = {};

const newObj = { ...oldObj };

通过Object.assign()(ES6)

1
2
3
const oldObj = {};

const newObj = Object.assign({}, oldObj);

深拷贝

通过JSON实现深拷贝

  • 通过JSON实现深拷贝无法拷贝JS的函数
  • 如果出现循环引用,则会报错
1
2
3
const oldObj = {};

const newObj = JSON.parse(JSON.stringify(oldObj));

通过递归函数实现深拷贝

1
2
3
4
5
6
7
8
9
function deepCopy(oldObj) {
let newObj = Array.isArray(oldObj) ? [] : {};
for (let key in oldObj) {
if (oldObj.hasOwnProperty(key)) {
newObj[key] = typeof oldObj[key] === 'object' ? deepCopy(oldObj[key]) : oldObj[key];
}
}
return newObj;
}

完成