32 lines
965 B
JavaScript
32 lines
965 B
JavaScript
|
"use strict";
|
||
|
|
||
|
/**
|
||
|
* Returns `true` when the value is a regular Object and not a specialized Object
|
||
|
*
|
||
|
* This helps speed up deepEqual cyclic checks
|
||
|
*
|
||
|
* The premise is that only Objects are stored in the visited array.
|
||
|
* So if this function returns false, we don't have to do the
|
||
|
* expensive operation of searching for the value in the the array of already
|
||
|
* visited objects
|
||
|
*
|
||
|
* @private
|
||
|
* @param {object} value The object to examine
|
||
|
* @returns {boolean} `true` when the object is a non-specialised object
|
||
|
*/
|
||
|
function isObject(value) {
|
||
|
return (
|
||
|
typeof value === "object" &&
|
||
|
value !== null &&
|
||
|
// none of these are collection objects, so we can return false
|
||
|
!(value instanceof Boolean) &&
|
||
|
!(value instanceof Date) &&
|
||
|
!(value instanceof Error) &&
|
||
|
!(value instanceof Number) &&
|
||
|
!(value instanceof RegExp) &&
|
||
|
!(value instanceof String)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
module.exports = isObject;
|