Checks if the provided value is an object created by the Object constructor.

  • Check if the provided value is truthy.
  • Use typeof to check if it is an object and Object.prototype.constructor to make sure the constructor is equal to Object.
const isPlainObject = val =>
  !!val && typeof val === 'object' && val.constructor === Object;
isPlainObject({ a: 1 }); // true
isPlainObject(new Map()); // false