1 | var arrayEach = require('./arrayEach')
|
2 | var keys = require('./keys')
|
3 | var isArray = require('./isArray')
|
4 | var clone = require('./clone')
|
5 |
|
6 | var objectAssignFns = Object.assign
|
7 |
|
8 | function handleAssign (destination, args, isClone) {
|
9 | var len = args.length
|
10 | for (var source, index = 1; index < len; index++) {
|
11 | source = args[index]
|
12 | arrayEach(keys(args[index]), isClone ? function (key) {
|
13 | destination[key] = clone(source[key], isClone)
|
14 | } : function (key) {
|
15 | destination[key] = source[key]
|
16 | })
|
17 | }
|
18 | return destination
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | var assign = function (target) {
|
29 | if (target) {
|
30 | var args = arguments
|
31 | if (target === true) {
|
32 | if (args.length > 1) {
|
33 | target = isArray(target[1]) ? [] : {}
|
34 | return handleAssign(target, args, true)
|
35 | }
|
36 | } else {
|
37 | return objectAssignFns ? objectAssignFns.apply(Object, args) : handleAssign(target, args)
|
38 | }
|
39 | }
|
40 | return target
|
41 | }
|
42 |
|
43 | module.exports = assign
|