The value to check
true if value is a normal plain object
console.log(isPlainObject({ 0: 'a', 1: 'b', 2: 'c' }));      // true
console.log(isPlainObject({ 100: 'a', 2: 'b', 7: 'c' }));    // true
console.log(isPlainObject(objCreate(null)));                 // true
const myObj = objCreate({}, {
  getFoo: {
    value() { return this.foo; }
  }
});
myObj.foo = 1;
console.log(isPlainObject(myObj));                   // true
console.log(isPlainObject(['a', 'b', 'c']));         // false
console.log(isPlainObject(new Date()));              // false
console.log(isPlainObject(new Error("An Error")));   // false
console.log(isPlainObject(null));                    // false
console.log(isPlainObject(undefined));               // false
console.log(isPlainObject("null"));                  // false
console.log(isPlainObject("undefined"));             // false
console.log(isPlainObject("1"));                     // false
console.log(isPlainObject("aa"));                    // false
Checks to see if the past value is a plain object (not a class/array) value. Object are considered to be "plain" if they are created with no prototype
Object.create(null)or by using the Object global (native) function, all other "objects" ar