mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-09 02:17:50 +00:00
Optimize _.isArray fallback, baseFlatten, & _.isArguments for plain objects.
This commit is contained in:
13
dist/lodash.compat.js
vendored
13
dist/lodash.compat.js
vendored
@@ -1112,8 +1112,8 @@
|
||||
while (++index < length) {
|
||||
var value = array[index];
|
||||
|
||||
// recursively flatten arrays (susceptible to call stack limits)
|
||||
if (value && typeof value == 'object' && (isArray(value) || isArguments(value))) {
|
||||
if (value && typeof value == 'object' && value.length && (isArray(value) || isArguments(value))) {
|
||||
// recursively flatten arrays (susceptible to call stack limits)
|
||||
if (!isShallow) {
|
||||
value = baseFlatten(value, isShallow, isArgArrays);
|
||||
}
|
||||
@@ -1745,12 +1745,14 @@
|
||||
* // => false
|
||||
*/
|
||||
function isArguments(value) {
|
||||
return (value && typeof value == 'object') ? toString.call(value) == argsClass : false;
|
||||
return value && typeof value == 'object' && typeof value.length == 'number' &&
|
||||
toString.call(value) == argsClass || false;
|
||||
}
|
||||
// fallback for browsers that can't detect `arguments` objects by [[Class]]
|
||||
if (!support.argsClass) {
|
||||
isArguments = function(value) {
|
||||
return (value && typeof value == 'object') ? hasOwnProperty.call(value, 'callee') : false;
|
||||
return value && typeof value == 'object' && typeof value.length == 'number' &&
|
||||
hasOwnProperty.call(value, 'callee') || false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1772,7 +1774,8 @@
|
||||
* // => true
|
||||
*/
|
||||
var isArray = nativeIsArray || function(value) {
|
||||
return (value && typeof value == 'object') ? toString.call(value) == arrayClass : false;
|
||||
return value && typeof value == 'object' && typeof value.length == 'number' &&
|
||||
toString.call(value) == arrayClass || false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user