is-instance-of
Like instanceof
, but uses class name strings. This means the module works cross-frame, unlike instanceof
.
Installation
Requires Node.js 6.0.0 or above.
npm i is-instance-of
API
The module exports a single function.
Parameters
- Bindable:
x
(object): The object that may or may not be an instance of the specified class(es). classes
(function, string, or array of functions/strings): Class names to look for in x
’s prototype chain. (If one or more functions are provided, their names will be used, so that the check works cross-realm.)- Object argument:
- Optional:
ci
(boolean): If true
, class names will be compared case-insensitively. Defaults to false
.
Return Value
true
if x
has any one of the classes
in its prototype chain.false
otherwise.
Examples
const isInstanceOf = require('is-instance-of')
isInstanceOf(new Date(), 'Date')
isInstanceOf(new Date(), Date)
isInstanceOf(new Date(), 'date')
isInstanceOf(new Date(), 'date', {ci: true})
isInstanceOf(new Error(), ['Error', 'Date', RegExp])
[]::isInstanceOf('Array')
Nota Bene
This module’s strength is also its weakness. The module will consider Date
in one frame/context to be equivalent to Date
in another context, so long as they have the same name. The advantage of this approach is that this allows for cross-frame type checks. The disadvantage is that Date
could be a completely different class in the other context and this module wouldn’t know the difference.
Related
- class-chain: Returns an object’s class and its ancestors.
- isit: Tests a value’s type against a string like
'positive integer'
or 'non-empty map'
.