# Constructor Name
> Determine the name of a value's constructor.
## Usage
```javascript
var constructorName = require( '@stdlib/utils/constructor-name' );
```
#### constructorName( value )
Returns the name of a value's constructor.
```javascript
var v = constructorName( 'a' );
// returns 'String'
v = constructorName( 5 );
// returns 'Number'
function Beep() {
return this;
}
v = constructorName( new Beep() );
// returns 'Beep'
```
| description | value | constructor | notes |
| --------------------- | ----------------------------------- | --------------------- | ------------ |
| string | `'beep'` | `'String'` | |
| number | `5` | `'Number'` | |
| NaN | `NaN` | `'Number'` | |
| infinity | `+infinity`/`-infinity` | `'Number'` | |
| boolean | `true`/`false` | `'Boolean'` | |
| null | `null` | `'Null'` | |
| undefined | `undefined` | `'Undefined'` | |
| array | `['beep', 5]` | `'Array'` | |
| object | `{'foo': 'bar'}` | `'Object'` | |
| function | `function (){}` | `'Function'` | |
| symbol | `Symbol()` | `'Symbol'` | ES2015 |
| regexp | `/./` | `'RegExp'` | Android 4.1+ |
| String | `new String('beep')` | `'String'` | |
| Number | `new Number(5)` | `'Number'` | |
| Boolean | `new Boolean(false)` | `'Boolean'` | |
| Object | `new Object()` | `'Object'` | |
| Array | `new Array()` | `'Array'` | |
| Int8Array | `new Int8Array()` | `'Int8Array'` | |
| Uint8Array | `new Uint8Array()` | `'Uint8Array'` | |
| Uint8ClampedArray | `new Uint8ClampedArray()` | `'Uint8ClampedArray'` | |
| Int16Array | `new Int16Array()` | `'Int16Array'` | |
| Uint16Array | `new Uint16Array()` | `'Uint16Array'` | |
| Int32Array | `new Int32Array()` | `'Int32Array'` | |
| Uint32Array | `new Uint32Array()` | `'Uint32Array'` | |
| Float32Array | `new Float32Array()` | `'Float32Array'` | |
| Float64Array | `new Float64Array()` | `'Float64Array'` | |
| ArrayBuffer | `new ArrayBuffer()` | `'ArrayBuffer'` | |
| Buffer | `new Buffer()` | `'Buffer'` | Node.js |
| Date | `new Date()` | `'Date'` | |
| RegExp | `new RegExp('.')` | `'RegExp'` | Android 4.1+ |
| Function | `new Function('x', 'return x')` | `'Function'` | |
| Map | `new Map()` | `'Map'` | ES2015 |
| WeakMap | `new WeakMap()` | `'WeakMap'` | ES2015 |
| Set | `new Set()` | `'Set'` | ES2015 |
| WeakSet | `new WeakSet()` | `'WeakSet'` | ES2015 |
| Error | `new Error()` | `'Error'` | |
| TypeError | `new TypeError()` | `'TypeError'` | |
| SyntaxError | `new SyntaxError()` | `'SyntaxError'` | |
| ReferenceError | `new ReferenceError()` | `'ReferenceError'` | |
| URIError | `new URIError()` | `'URIError'` | |
| RangeError | `new RangeError()` | `'RangeError'` | |
| EvalError | `new EvalError()` | `'EvalError'` | |
| Math | `Math` | `'Math'` | |
| JSON | `JSON` | `'JSON'` | IE8+ |
| arguments | `(function(){return arguments;})()` | `'Arguments'` | IE9+ |
| custom constructor | `new Beep()` | `'Beep'` | |
| anonymous constructor | `new (function(){})()` | `''` | |
## Notes
- If a value's constructor is an anonymous `function`, the implementation returns an empty `string`.
```javascript
var Beep = function () {
return this;
};
var v = constructorName( new Beep() );
// returns ''
```
## Examples
```javascript
var Float32Array = require( '@stdlib/array/float32' );
var Float64Array = require( '@stdlib/array/float64' );
var Int8Array = require( '@stdlib/array/int8' );
var Int16Array = require( '@stdlib/array/int16' );
var Int32Array = require( '@stdlib/array/int32' );
var Uint8Array = require( '@stdlib/array/uint8' );
var Uint8ClampedArray = require( '@stdlib/array/uint8c' );
var Uint16Array = require( '@stdlib/array/uint16' );
var Uint32Array = require( '@stdlib/array/uint32' );
var ArrayBuffer = require( '@stdlib/array/buffer' );
var Buffer = require( '@stdlib/buffer/ctor' );
var Symbol = require( '@stdlib/symbol/ctor' );
var constructorName = require( '@stdlib/utils/constructor-name' );
function noop() {
// Do nothing...
}
var v = constructorName( 'a' );
// returns 'String'
v = constructorName( 5 );
// returns 'Number'
v = constructorName( NaN );
// returns 'Number'
v = constructorName( null );
// returns 'Null'
v = constructorName( void 0 );
// returns 'Undefined'
v = constructorName( true );
// returns 'Boolean'
v = constructorName( false );
// returns 'Boolean'
v = constructorName( {} );
// returns 'Object'
v = constructorName( [] );
// returns 'Array'
v = constructorName( noop );
// returns 'Function'
v = constructorName( /./ );
// returns 'RegExp'
v = constructorName( new Date() );
// returns 'Date'
v = constructorName( new Map() );
// returns 'Map'
v = constructorName( new WeakMap() );
// returns 'WeakMap'
v = constructorName( new Set() );
// returns 'Set'
v = constructorName( new WeakSet() );
// returns 'WeakSet'
v = constructorName( Symbol( 'beep' ) );
// returns 'Symbol'
v = constructorName( new Error() );
// returns 'Error'
v = constructorName( new TypeError() );
// returns 'TypeError'
v = constructorName( new SyntaxError() );
// returns 'SyntaxError'
v = constructorName( new URIError() );
// returns 'URIError'
v = constructorName( new RangeError() );
// returns 'RangeError'
v = constructorName( new ReferenceError() );
// returns 'ReferenceError'
v = constructorName( new EvalError() );
// returns 'EvalError'
v = constructorName( new Int8Array() );
// returns 'Int8Array'
v = constructorName( new Uint8Array() );
// returns 'Uint8Array'
v = constructorName( new Uint8ClampedArray() );
// returns 'Uint8ClampedArray'
v = constructorName( new Int16Array() );
// returns 'Int16Array'
v = constructorName( new Uint16Array() );
// returns 'Uint16Array'
v = constructorName( new Int32Array() );
// returns 'Int32Array'
v = constructorName( new Uint32Array() );
// returns 'Uint32Array'
v = constructorName( new Float32Array() );
// returns 'Float32Array'
v = constructorName( new Float64Array() );
// returns 'Float64Array'
v = constructorName( new ArrayBuffer() );
// returns 'ArrayBuffer'
v = constructorName( new Buffer( 'beep' ) );
// returns 'Buffer'
v = constructorName( Math );
// returns 'Math'
v = constructorName( JSON );
// returns 'JSON'
function Person1() {
return this;
}
v = constructorName( new Person1() );
// returns 'Person1'
var Person2 = function () {
return this;
};
v = constructorName( new Person2() );
// returns ''
```