You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
787 B

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