如果只有一层也可以通过object.assign(last, before)进行合并
last是合并后的对象
let last = {
id: 0,
name: 'last',
color: 'red'
};
let before = {
name: 'before',
next: 'nextKey'
};
Object.assign(last, before);
/**
* 深层合并两个对象
* @param firstObject secondObject 两个object,不限制对象层级
* @return newObject 深层合并后的新对象
*/
export function $deepObjectMerge(firstObject, secondObject) {
for (var key in secondObject) {
firstObject[key] = firstObject[key] && Object.prototype.toString.call(firstObject[key]) === "[object Object]" ?
$deepObjectMerge(firstObject[key], secondObject[key]) : secondObject[key];
}
return firstObject;
}
测试
测试代码
let a = {
name: 'aaa',
line: {
show: false,
color: 'red'
}
};
let b = {
id: 2,
line: {
show: true,
name: 'bbb'
}
};
function $deepObjectMerge(firstObject, secondObject) {
for (var key in secondObject) {
firstObject[key] = firstObject[key] && Object.prototype.toString.call(firstObject[key]) === "[object Object]" ?
$deepObjectMerge(firstObject[key], secondObject[key]) : secondObject[key];
}
return firstObject;
};
console.log(a, b, $deepObjectMerge(a, b));