Simplify isPojo

This commit is contained in:
Jon Staab
2024-09-24 16:47:43 -07:00
parent fd4f782798
commit 012a20c813
+2 -17
View File
@@ -174,26 +174,11 @@ export const ellipsize = (s: string, l: number, suffix = '...') => {
}
export const isPojo = (obj: any) => {
const hasOwnProperty = Object.prototype.hasOwnProperty
const toString = Object.prototype.toString
// Detect obvious negatives use toString to catch host objects
if (obj === null || toString.call(obj) !== '[object Object]') {
if (obj === null || typeof obj !== "object") {
return false
}
const proto = Object.getPrototypeOf(obj)
// Objects with no prototype (e.g., `Object.create( null )`) are plain
if (!proto) {
return true
}
// Objects with prototype are plain iff constructed by `Object` function
const ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor
return (
typeof ctor === 'function' &&
hasOwnProperty.toString.call(ctor) === hasOwnProperty.toString.call(Object)
)
return Object.getPrototypeOf(obj) === Object.prototype
}
export const equals = (a: any, b: any) => {