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.
33 lines
976 B
33 lines
976 B
'use strict'; |
|
|
|
var hasToStringTag = require('has-tostringtag/shams')(); |
|
var callBound = require('call-bind/callBound'); |
|
|
|
var $toString = callBound('Object.prototype.toString'); |
|
|
|
var isStandardArguments = function isArguments(value) { |
|
if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) { |
|
return false; |
|
} |
|
return $toString(value) === '[object Arguments]'; |
|
}; |
|
|
|
var isLegacyArguments = function isArguments(value) { |
|
if (isStandardArguments(value)) { |
|
return true; |
|
} |
|
return value !== null && |
|
typeof value === 'object' && |
|
typeof value.length === 'number' && |
|
value.length >= 0 && |
|
$toString(value) !== '[object Array]' && |
|
$toString(value.callee) === '[object Function]'; |
|
}; |
|
|
|
var supportsStandardArguments = (function () { |
|
return isStandardArguments(arguments); |
|
}()); |
|
|
|
isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests |
|
|
|
module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
|
|
|