1.0.2 • Published 7 years ago
get-object-class v1.0.2
get-object-class
A more explicit improvement on typeof
Installation
$ npm i get-object-class --saveUsage
// 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)); // promiseWhy 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); // objectThis 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)); // falseKeep 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)); // falseDevelopment
Standard stuff, clone the repo and npm i to get the dependencies. npm scripts available:
build=> builds the distributed JS withNODE_ENV=developmentand with sourcemapsbuild-minified=> builds the distributed JS withNODE_ENV=productionand minifiedcompile-for-publish=> runs thelint,test,transpile,build, andbuild-minifiedscriptsdev=> runs the webpack dev server for the playgroundlint=> runs ESLint against files in thesrcfolderprepublish=> if in publish, runscompile-for-publishtest=> run ava with NODE_ENV=testtest:watch=> runstestbut with persistent watchertranspile=> runs Babel against files insrcto files inlib