| "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; |