NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/xe-utils/methods/object/assign.js

44 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-09-14 14:47:11 +08:00
var arrayEach = require('../array/arrayEach')
var keys = require('../base/keys')
var isArray = require('../base/isArray')
var clone = require('../base/clone')
var objectAssignFns = Object.assign
function handleAssign (destination, args, isClone) {
var len = args.length
for (var source, index = 1; index < len; index++) {
source = args[index]
arrayEach(keys(args[index]), isClone ? function (key) {
destination[key] = clone(source[key], isClone)
} : function (key) {
destination[key] = source[key]
})
}
return destination
}
/**
* 浅拷贝一个或者多个对象到目标对象中
*
* @param {Object} obj 目标对象
* @param {...Object}
* @return {Boolean}
*/
var assign = function (target) {
if (target) {
var args = arguments
if (target === true) {
if (args.length > 1) {
target = isArray(target[1]) ? [] : {}
return handleAssign(target, args, true)
}
} else {
return objectAssignFns ? objectAssignFns.apply(Object, args) : handleAssign(target, args)
}
}
return target
}
module.exports = assign