| New file |
| | |
| | | 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 (!source.hasOwnProperty(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; |