_baseInvoke.js 869 B

12345678910111213141516171819202122232425262728
  1. var apply = require('./_apply'),
  2. castPath = require('./_castPath'),
  3. isKey = require('./_isKey'),
  4. last = require('./last'),
  5. parent = require('./_parent'),
  6. toKey = require('./_toKey');
  7. /**
  8. * The base implementation of `_.invoke` without support for individual
  9. * method arguments.
  10. *
  11. * @private
  12. * @param {Object} object The object to query.
  13. * @param {Array|string} path The path of the method to invoke.
  14. * @param {Array} args The arguments to invoke the method with.
  15. * @returns {*} Returns the result of the invoked method.
  16. */
  17. function baseInvoke(object, path, args) {
  18. if (!isKey(path, object)) {
  19. path = castPath(path);
  20. object = parent(object, path);
  21. path = last(path);
  22. }
  23. var func = object == null ? object : object[toKey(path)];
  24. return func == null ? undefined : apply(func, object, args);
  25. }
  26. module.exports = baseInvoke;