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 = // true // true // Case sensitivity / insensitivity // false // true // Only one class name needs to be matched for true to be returned // true // Supports the bind operator:: // 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'
.