| var assignValue = require('./_assignValue'), |
| baseAssignValue = require('./_baseAssignValue'); |
| |
| /** |
| * Copies properties of `source` to `object`. |
| * |
| * @private |
| * @param {Object} source The object to copy properties from. |
| * @param {Array} props The property identifiers to copy. |
| * @param {Object} [object={}] The object to copy properties to. |
| * @param {Function} [customizer] The function to customize copied values. |
| * @returns {Object} Returns `object`. |
| */ |
| function copyObject(source, props, object, customizer) { |
| var isNew = !object; |
| object || (object = {}); |
| |
| var index = -1, |
| length = props.length; |
| |
| while (++index < length) { |
| var key = props[index]; |
| |
| var newValue = customizer |
| ? customizer(object[key], source[key], key, object, source) |
| : undefined; |
| |
| if (newValue === undefined) { |
| newValue = source[key]; |
| } |
| if (isNew) { |
| baseAssignValue(object, key, newValue); |
| } else { |
| assignValue(object, key, newValue); |
| } |
| } |
| return object; |
| } |
| |
| module.exports = copyObject; |