js 的Object.assign 可以拷贝一个对象,但是更深层次的对象无法进行拷贝。
所以还是必须自己实现一个递归来实现深拷贝
// 深度拷贝
function extend(obj, obj2) {
// 拷贝对象,防止修改了原始obj
var newObj = Object.assign({}, obj);
for (var key in obj2) {
if ("object" != typeof obj[key] || null === obj[key] || Array.isArray(obj[key])) {
if (void 0 !== obj2[key]) {
newObj[key] = obj2[key];
}
}else{
newObj[key] = extend(obj[key], obj2[key]);
}
}
return newObj
}
这样一来,就不用担心嵌套对象的拷贝了