5.6 KiB
5.6 KiB
Native Class
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.toStringTag
allows 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]'