x-js-utils
Version:
39 lines (38 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var deepClone_1 = require("./deepClone");
// JS对象深度合并
function deepMerge(target, source) {
if (target === void 0) { target = {}; }
if (source === void 0) { source = {}; }
target = (0, deepClone_1.default)(target);
if (typeof target !== 'object' || typeof source !== 'object')
return null;
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;
}
exports.default = deepMerge;