Determine the name of a value's constructor.
Usage
var constructorName = require( '@stdlib/utils/constructor-name' );
constructorName( value )
Returns the name of a value's constructor.
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 emptystring.var Beep = function () { return this; }; var v = constructorName( new Beep() ); // returns ''
Examples
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 ''
See Also
@stdlib/utils/function-name: determine a function's name.