UNPKG

1.13 kBJavaScriptView Raw
1var arrayEach = require('./arrayEach')
2var keys = require('./keys')
3var isArray = require('./isArray')
4var clone = require('./clone')
5
6var objectAssignFns = Object.assign
7
8function 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 * @param {Object} target 目标对象
25 * @param {...Object}
26 * @return {Boolean}
27 */
28var 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
43module.exports = assign