70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
![]() |
var isLength = require('./isLength'),
|
||
|
isObjectLike = require('./isObjectLike');
|
||
|
|
||
|
/** `Object#toString` result references. */
|
||
|
var argsTag = '[object Arguments]',
|
||
|
arrayTag = '[object Array]',
|
||
|
boolTag = '[object Boolean]',
|
||
|
dateTag = '[object Date]',
|
||
|
errorTag = '[object Error]',
|
||
|
funcTag = '[object Function]',
|
||
|
mapTag = '[object Map]',
|
||
|
numberTag = '[object Number]',
|
||
|
objectTag = '[object Object]',
|
||
|
regexpTag = '[object RegExp]',
|
||
|
setTag = '[object Set]',
|
||
|
stringTag = '[object String]',
|
||
|
weakMapTag = '[object WeakMap]';
|
||
|
|
||
|
var arrayBufferTag = '[object ArrayBuffer]',
|
||
|
dataViewTag = '[object DataView]',
|
||
|
float32Tag = '[object Float32Array]',
|
||
|
float64Tag = '[object Float64Array]',
|
||
|
int8Tag = '[object Int8Array]',
|
||
|
int16Tag = '[object Int16Array]',
|
||
|
int32Tag = '[object Int32Array]',
|
||
|
uint8Tag = '[object Uint8Array]',
|
||
|
uint8ClampedTag = '[object Uint8ClampedArray]',
|
||
|
uint16Tag = '[object Uint16Array]',
|
||
|
uint32Tag = '[object Uint32Array]';
|
||
|
|
||
|
/** Used to identify `toStringTag` values of typed arrays. */
|
||
|
var typedArrayTags = {};
|
||
|
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
|
||
|
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
|
||
|
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
|
||
|
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
|
||
|
typedArrayTags[uint32Tag] = true;
|
||
|
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
|
||
|
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
|
||
|
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
|
||
|
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
|
||
|
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
|
||
|
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
|
||
|
typedArrayTags[setTag] = typedArrayTags[stringTag] =
|
||
|
typedArrayTags[weakMapTag] = false;
|
||
|
|
||
|
/** Used for built-in method references. */
|
||
|
var objectProto = Object.prototype;
|
||
|
|
||
|
/**
|
||
|
* Used to resolve the
|
||
|
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
||
|
* of values.
|
||
|
*/
|
||
|
var objectToString = objectProto.toString;
|
||
|
|
||
|
/**
|
||
|
* The base implementation of `_.isTypedArray` without Node.js optimizations.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {*} value The value to check.
|
||
|
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
||
|
*/
|
||
|
function baseIsTypedArray(value) {
|
||
|
return isObjectLike(value) &&
|
||
|
isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
|
||
|
}
|
||
|
|
||
|
module.exports = baseIsTypedArray;
|