is-instance-of
v1.0.2
Published
Like instanceof, but uses class name strings.
Downloads
7,061
Readme
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 inx
’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): Iftrue
, class names will be compared case-insensitively. Defaults tofalse
.
- Optional:
Return Value
true
ifx
has any one of theclasses
in its prototype chain.false
otherwise.
Examples
const isInstanceOf = require('is-instance-of')
isInstanceOf(new Date(), 'Date') // true
isInstanceOf(new Date(), Date) // true
// Case sensitivity / insensitivity
isInstanceOf(new Date(), 'date') // false
isInstanceOf(new Date(), 'date', {ci: true}) // true
// Only one class name needs to be matched for true to be returned
isInstanceOf(new Error(), ['Error', 'Date', RegExp]) // true
// Supports the bind operator
[]::isInstanceOf('Array') // true
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'
.