function getPrototypeOf( value ) {
	if (
		value === null ||
		value === void 0
	) {
		return null;
	}
	// In order to ensure consistent ES5/ES6 behavior, cast input value to an object (strings, numbers, booleans); ES5 `Object.getPrototypeOf` throws when provided primitives and ES6 `Object.getPrototypeOf` casts:
	value = Object( value );

	return getProto( value );
}
Returns the prototype of a provided object.

@param {*} value - input value
@returns {(Object|null)} prototype

@example
var proto = getPrototypeOf( {} );
// returns {}