You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.6 KiB
						
					
					
				var baseGetTag = require('./_baseGetTag'), | 
						|
    getPrototype = require('./_getPrototype'), | 
						|
    isObjectLike = require('./isObjectLike'); | 
						|
 | 
						|
/** `Object#toString` result references. */ | 
						|
var objectTag = '[object Object]'; | 
						|
 | 
						|
/** Used for built-in method references. */ | 
						|
var funcProto = Function.prototype, | 
						|
    objectProto = Object.prototype; | 
						|
 | 
						|
/** Used to resolve the decompiled source of functions. */ | 
						|
var funcToString = funcProto.toString; | 
						|
 | 
						|
/** Used to check objects for own properties. */ | 
						|
var hasOwnProperty = objectProto.hasOwnProperty; | 
						|
 | 
						|
/** Used to infer the `Object` constructor. */ | 
						|
var objectCtorString = funcToString.call(Object); | 
						|
 | 
						|
/** | 
						|
 * Checks if `value` is a plain object, that is, an object created by the | 
						|
 * `Object` constructor or one with a `[[Prototype]]` of `null`. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @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 | 
						|
 */ | 
						|
function isPlainObject(value) { | 
						|
  if (!isObjectLike(value) || baseGetTag(value) != objectTag) { | 
						|
    return false; | 
						|
  } | 
						|
  var proto = getPrototype(value); | 
						|
  if (proto === null) { | 
						|
    return true; | 
						|
  } | 
						|
  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; | 
						|
  return typeof Ctor == 'function' && Ctor instanceof Ctor && | 
						|
    funcToString.call(Ctor) == objectCtorString; | 
						|
} | 
						|
 | 
						|
module.exports = isPlainObject;
 | 
						|
 |