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
}
這樣一來,就不用擔心嵌套對象的拷貝了