index.js 976 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. var hasToStringTag = require('has-tostringtag/shams')();
  3. var callBound = require('call-bind/callBound');
  4. var $toString = callBound('Object.prototype.toString');
  5. var isStandardArguments = function isArguments(value) {
  6. if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {
  7. return false;
  8. }
  9. return $toString(value) === '[object Arguments]';
  10. };
  11. var isLegacyArguments = function isArguments(value) {
  12. if (isStandardArguments(value)) {
  13. return true;
  14. }
  15. return value !== null &&
  16. typeof value === 'object' &&
  17. typeof value.length === 'number' &&
  18. value.length >= 0 &&
  19. $toString(value) !== '[object Array]' &&
  20. $toString(value.callee) === '[object Function]';
  21. };
  22. var supportsStandardArguments = (function () {
  23. return isStandardArguments(arguments);
  24. }());
  25. isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests
  26. module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;