123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
-
-
-
- var arrayTag = '[object Array]',
- funcTag = '[object Function]';
-
-
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-
- function isObjectLike(value) {
- return !!value && typeof value == 'object';
- }
-
-
- var objectProto = Object.prototype;
-
-
- var fnToString = Function.prototype.toString;
-
-
- var hasOwnProperty = objectProto.hasOwnProperty;
-
-
- var objToString = objectProto.toString;
-
-
- var reIsNative = RegExp('^' +
- fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
- );
-
-
- var nativeIsArray = getNative(Array, 'isArray');
-
-
- var MAX_SAFE_INTEGER = 9007199254740991;
-
-
- function getNative(object, key) {
- var value = object == null ? undefined : object[key];
- return isNative(value) ? value : undefined;
- }
-
-
- function isLength(value) {
- return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
- }
-
-
- var isArray = nativeIsArray || function(value) {
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
- };
-
-
- function isFunction(value) {
-
-
-
- return isObject(value) && objToString.call(value) == funcTag;
- }
-
-
- function isObject(value) {
-
-
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
- }
-
-
- function isNative(value) {
- if (value == null) {
- return false;
- }
- if (isFunction(value)) {
- return reIsNative.test(fnToString.call(value));
- }
- return isObjectLike(value) && reIsHostCtor.test(value);
- }
-
- module.exports = isArray;
|