UNPKG

878 BJavaScriptView Raw
1var isArray = require('./isArray')
2var isPlainObject = require('./isPlainObject')
3var each = require('./each')
4
5function handleMerge (target, source) {
6 if ((isPlainObject(target) && isPlainObject(source)) || (isArray(target) && isArray(source))) {
7 each(source, function (obj, key) {
8 target[key] = handleMerge(target[key], obj)
9 })
10 return target
11 }
12 return source
13}
14
15/**
16 * 将一个或多个源对象合并到目标对象中
17 *
18 * @param {Object} target 目标对象
19 * @param {...Object}
20 * @return {Boolean}
21 */
22 var merge = function (target) {
23 if (!target) {
24 target = {}
25 }
26 var args = arguments
27 var len = args.length
28 for (var source, index = 1; index < len; index++) {
29 source = args[index]
30 if (source) {
31 handleMerge(target, source)
32 }
33 }
34 return target
35}
36
37module.exports = merge