defaultsDeep.js 854 B

12345678910111213141516171819202122232425262728293031
  1. var apply = require('./_apply'),
  2. mergeDefaults = require('./_mergeDefaults'),
  3. mergeWith = require('./mergeWith'),
  4. rest = require('./rest');
  5. /**
  6. * This method is like `_.defaults` except that it recursively assigns
  7. * default properties.
  8. *
  9. * **Note:** This method mutates `object`.
  10. *
  11. * @static
  12. * @memberOf _
  13. * @since 3.10.0
  14. * @category Object
  15. * @param {Object} object The destination object.
  16. * @param {...Object} [sources] The source objects.
  17. * @returns {Object} Returns `object`.
  18. * @see _.defaults
  19. * @example
  20. *
  21. * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });
  22. * // => { 'user': { 'name': 'barney', 'age': 36 } }
  23. *
  24. */
  25. var defaultsDeep = rest(function(args) {
  26. args.push(undefined, mergeDefaults);
  27. return apply(mergeWith, undefined, args);
  28. });
  29. module.exports = defaultsDeep;