docs: function isPlainObject (obj) {
    var hasOwn = ({}).hasOwnProperty
  
    return obj &&
      // is object
      ({}).toString.call(obj) === '[object Object]' &&
  
      // not dom node
      !obj.nodeType &&
  
      // not own constructor
      obj.constructor &&
      !hasOwn.call(obj, 'constructor') &&
  
      // not window
      obj !== obj.window &&
  
      // not own constructor prototype must be object
      obj.constructor.prototype &&
      hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')
  }