15 lines
526 B
JavaScript
15 lines
526 B
JavaScript
|
function isPlainObject(value) {
|
||
|
if (typeof value !== "object" || value === null)
|
||
|
return false;
|
||
|
if (Object.prototype.toString.call(value) !== "[object Object]")
|
||
|
return false;
|
||
|
const proto = Object.getPrototypeOf(value);
|
||
|
if (proto === null)
|
||
|
return true;
|
||
|
const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
|
||
|
return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
|
||
|
}
|
||
|
export {
|
||
|
isPlainObject
|
||
|
};
|