# 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
```