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]'