1 | var isArray = require('./isArray')
|
2 | var isPlainObject = require('./isPlainObject')
|
3 | var each = require('./each')
|
4 |
|
5 | function 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 |
|
19 |
|
20 |
|
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 |
|
37 | module.exports = merge
|