function isPrototypeOf( value, proto ) { // eslint-disable-line stdlib/no-redeclare
	var type = typeof proto;
	if (
		proto === null ||
		(type !== 'object' && type !== 'function')
	) {
		throw new TypeError( format( 'invalid argument. Second argument must be either an object (except null) or a function. Value: `%s`.', proto ) );
	}
	type = typeof value;
	if (
		value === null ||
		(type !== 'object' && type !== 'function')
	) {
		return false;
	}
	return isProtoOf.call( proto, value );
}
Tests if an object's prototype chain contains a provided prototype.

@param {*} value - value to test
@param {(Object|Function)} proto - prototype
@throws {TypeError} second argument must be an object and not null
@returns {boolean} boolean indicating if a provided prototype exists in a prototype chain

@example
var inherit = require( '@stdlib/utils/inherit' );

function Foo() {
    return this;
}

function Bar() {
    return this;
}
inherit( Bar, Foo );

var bar = new Bar();

var bool = isPrototypeOf( bar, Foo.prototype );
// returns true