00001 var assignValue = require('./_assignValue'), 00002 baseAssignValue = require('./_baseAssignValue'); 00003 00014 function copyObject(source, props, object, customizer) { 00015 var isNew = !object; 00016 object || (object = {}); 00017 00018 var index = -1, 00019 length = props.length; 00020 00021 while (++index < length) { 00022 var key = props[index]; 00023 00024 var newValue = customizer 00025 ? customizer(object[key], source[key], key, object, source) 00026 : undefined; 00027 00028 if (newValue === undefined) { 00029 newValue = source[key]; 00030 } 00031 if (isNew) { 00032 baseAssignValue(object, key, newValue); 00033 } else { 00034 assignValue(object, key, newValue); 00035 } 00036 } 00037 return object; 00038 } 00039 00040 module.exports = copyObject;