Determine the specification defined classification of an object.
Usage
var nativeClass = require( '@stdlib/utils/native-class' );
nativeClass( value )
Returns a string value indicating a specification defined classification of an object.
var str = nativeClass( 'a' ); // returns '[object String]' str = nativeClass( 5 ); // returns '[object Number]' function Beep() { return this; } str = nativeClass( new Beep() ); // returns '[object Object]'
Notes
-
The function is not robust for ES2015+ environments. In ES2015+,
Symbol.toStringTagallows overriding the default description of an object.var toStr = Object.prototype.toString; var str = toStr.call( false ); // returns '[object Boolean]' var o = {}; str = toStr.call( o ); // returns '[object Object]' // Mask the default description: o[ Symbol.toStringTag ] = 'Boolean'; str = toStr.call( o ); // returns '[object Boolean]'
While measures are taken to uncover the default description, such measures can be thwarted. While this function remains useful for type-checking, be aware that value impersonation is possible. Prefer functions tailored to checking for particular value types, as specialized functions are better equipped to address
Symbol.toStringTag.
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 Symbol = require( '@stdlib/symbol/ctor' ); var nativeClass = require( '@stdlib/utils/native-class' ); var str = nativeClass( 'a' ); // returns '[object String]' str = nativeClass( 5 ); // returns '[object Number]' str = nativeClass( NaN ); // returns '[object Number]' str = nativeClass( null ); // returns '[object Null]' str = nativeClass( void 0 ); // returns '[object Undefined]' str = nativeClass( true ); // returns '[object Boolean]' str = nativeClass( false ); // returns '[object Boolean]' str = nativeClass( {} ); // returns '[object Object]' str = nativeClass( [] ); // returns '[object Array]' str = nativeClass( function noop() {} ); // returns '[object Function]' str = nativeClass( /./ ); // returns '[object RegExp]' str = nativeClass( new Date() ); // returns '[object Date]' str = nativeClass( new Map() ); // returns '[object Map]' str = nativeClass( new WeakMap() ); // returns '[object WeakMap]' str = nativeClass( new Set() ); // returns '[object Set]' str = nativeClass( new WeakSet() ); // returns '[object WeakSet]' str = nativeClass( Symbol( 'beep' ) ); // returns '[object Symbol]' str = nativeClass( new Error() ); // returns '[object Error]' str = nativeClass( new TypeError() ); // returns '[object Error]' str = nativeClass( new SyntaxError() ); // returns '[object Error]' str = nativeClass( new URIError() ); // returns '[object Error]' str = nativeClass( new RangeError() ); // returns '[object Error]' str = nativeClass( new ReferenceError() ); // returns '[object Error]' str = nativeClass( new EvalError() ); // returns '[object Error]' str = nativeClass( new Int8Array() ); // returns '[object Int8Array]' str = nativeClass( new Uint8Array() ); // returns '[object Uint8Array]' str = nativeClass( new Uint8ClampedArray() ); // returns '[object Uint8ClampedArray]' str = nativeClass( new Int16Array() ); // returns '[object Int16Array]' str = nativeClass( new Uint16Array() ); // returns '[object Uint16Array]' str = nativeClass( new Int32Array() ); // returns '[object Int32Array]' str = nativeClass( new Uint32Array() ); // returns '[object Uint32Array]' str = nativeClass( new Float32Array() ); // returns '[object Float32Array]' str = nativeClass( new Float64Array() ); // returns '[object Float64Array]' str = nativeClass( new ArrayBuffer() ); // returns '[object ArrayBuffer]' str = nativeClass( Math ); // returns '[object Math]' str = nativeClass( JSON ); // returns '[object JSON]' function Person() { return this; } str = nativeClass( new Person() ); // returns '[object Object]'
See Also
@stdlib/utils/constructor-name: determine the name of a value's constructor.@stdlib/utils/type-of: determine a value's type.