# instanceOf > Test whether a value has in its prototype chain a specified constructor as a prototype property.
## Usage ```javascript var instanceOf = require( '@stdlib/assert/instance-of' ); ``` #### instanceOf( value, constructor ) Tests whether a `value` has in its prototype chain a specified `constructor` as a `prototype` property. ```javascript var inherit = require( '@stdlib/utils/inherit' ); function Foo() { return this; } function Bar() { return this; } inherit( Bar, Foo ); var bar = new Bar(); var bool = instanceOf( bar, Foo ); // returns true ```
## Notes - The function throws a `TypeError` if provided a `constructor` argument which is not callable. ```javascript var bool = instanceOf( {}, null ); // throws ``` - While the prototype of an `object` created using object literal notion is `undefined`, the function returns `true` when provided an `object` literal and the `Object` constructor. This maintains consistent behavior with the `instanceof` operator. ```javascript var bool = ( {} instanceof Object ); // returns true bool = instanceOf( {}, Object ); // returns true ```
## Examples ```javascript var Number = require( '@stdlib/number/ctor' ); var instanceOf = require( '@stdlib/assert/instance-of' ); var bool = instanceOf( [], Array ); // returns true bool = instanceOf( [], Object ); // returns true bool = instanceOf( {}, Object ); // returns true bool = instanceOf( new Date(), Date ); // returns true bool = instanceOf( /.*/, RegExp ); // returns true bool = instanceOf( instanceOf, Function ); // returns true bool = instanceOf( null, Object ); // returns false bool = instanceOf( 5, Number ); // returns false bool = instanceOf( '5', String ); // returns false bool = instanceOf( void 0, Object ); // returns false bool = instanceOf( {}, Array ); // returns false bool = instanceOf( {}, Function ); // returns false ```