code: function isPlainObject(value) {
  	if (!isObjectLike(value) || getTag(value) != '[object Object]') {
  		return false
  	}
  	if (Object.getPrototypeOf(value) === null) {
  		return true
  	}
  	let proto = value;
  	while (Object.getPrototypeOf(proto) !== null) {
  		proto = Object.getPrototypeOf(proto);
  	}
  	return Object.getPrototypeOf(value) === proto
  }
docs: Checks if `value` is a plain object, that is, an object created by the
  `Object` constructor or one with a `[[Prototype]]` of `null`.
  
  @since 0.8.0
  @category Lang
  @param {*} value The value to check.
  @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
  @example
  
  function Foo() {
  this.a = 1
  }
  
  isPlainObject(new Foo)
  // => false
  
  isPlainObject([1, 2, 3])
  // => false
  
  isPlainObject({ 'x': 0, 'y': 0 })
  // => true
  
  isPlainObject(Object.create(null))
  // => true