get-object-class
v1.0.2
Published
Get the class type of any object
Downloads
4
Maintainers
Readme
get-object-class
A more explicit improvement on typeof
Installation
$ npm i get-object-class --save
Usage
// ES2015
import goc from 'get-object-class';
// CommonJS
const goc = require('get-object-class');
// script
const goc = window.getObjectClass;
Implementation
const array = [];
const promise = Promise.resolve();
console.log(goc(array)); // array
console.log(goc(promise)); // promise
Why do we need this?
Generally speaking, you can use the typeof
operator to determine a number of object classes:
- boolean
- function
- number
- object
- string
- symbol
- undefined
However, this list is quite limited, and things can get confusing for other classes of objects:
console.log(typeof new Date()); // object
console.log(typeof null); // object
This library rectifies that by giving you the specific object class for any object (if I missed one tell me, I'll add it):
- Arguments =>
arguments
- Array =>
array
- ArrayBuffer =>
arraybuffer
- Boolean =>
boolean
- DataView =>
dataview
- Date =>
date
- Error =>
error
- Float32Array =>
float32array
- Float64Array =>
float64array
- Function =>
function
- GeneratorFunction =>
generatorfunction
- global =>
global
(specific to node) - Int8Array =>
int8array
- Int16Array =>
int16array
- Int32Array =>
int32array
- JSON =>
json
(tests the JSON object itself, not if the value is a valid JSON string) - Map =>
map
- Math =>
math
- Null =>
null
- Number =>
number
- Object =>
object
- Promise =>
promise
- RegExp =>
regexp
- Set =>
set
- String =>
string
- Symbol =>
symbol
- Uint8Array =>
uint8array
- Uint8ClampedArray =>
uint8Clampedarray
- Uint16Array =>
uint16array
- Uint32Array =>
uint32array
- WeakMap =>
weakmap
- WeakSet =>
weakset
- Window =>
window
(specific to browser)
Checker functions
get-object-class
also provides a checker function for each object class, example:
const array = [];
const boolean = true;
console.log(goc.isArray(array)); // true
console.log(goc.isBoolean(array)); // false
Keep in mind that the name of the function is driven by the PascalCase names in the list above:
const regexp = /foo/;
console.log(goc.isRegExp(regexp)); // true
console.log(goc.isFloat32Array(regexp)); // false
console.log(goc.isJSON(regexp)); // false
Development
Standard stuff, clone the repo and npm i
to get the dependencies. npm scripts available:
build
=> builds the distributed JS withNODE_ENV=development
and with sourcemapsbuild-minified
=> builds the distributed JS withNODE_ENV=production
and minifiedcompile-for-publish
=> runs thelint
,test
,transpile
,build
, andbuild-minified
scriptsdev
=> runs the webpack dev server for the playgroundlint
=> runs ESLint against files in thesrc
folderprepublish
=> if in publish, runscompile-for-publish
test
=> run ava with NODE_ENV=testtest:watch
=> runstest
but with persistent watchertranspile
=> runs Babel against files insrc
to files inlib