import deepClone from './deepClone'
|
|
// JS对象深度合并
|
function deepMerge(target = {}, source = {}) {
|
target = deepClone(target)
|
if (typeof target !== 'object' || typeof source !== 'object') return false
|
for (var prop in source) {
|
if (!Object.prototype.hasOwnProperty.call(source, prop)) continue
|
if (prop in target) {
|
if (typeof target[prop] !== 'object') {
|
target[prop] = source[prop]
|
} else {
|
if (typeof source[prop] !== 'object') {
|
target[prop] = source[prop]
|
} else {
|
if (target[prop].concat && source[prop].concat) {
|
target[prop] = target[prop].concat(source[prop])
|
} else {
|
target[prop] = deepMerge(target[prop], source[prop])
|
}
|
}
|
}
|
} else {
|
target[prop] = source[prop]
|
}
|
}
|
return target
|
}
|
|
export default deepMerge
|