1 | ;
|
2 |
|
3 | var handleCurry = require('./utils/handleCurry'),
|
4 | isFunction = require('./function');
|
5 |
|
6 | /**
|
7 | * Checks whether a value is an instance of given "class"
|
8 | *
|
9 | * **Aliases** _instance_
|
10 | *
|
11 | * @function instanceOf
|
12 | *
|
13 | * @example
|
14 | * var is = require('predicates');
|
15 | *
|
16 | * var Duck = function() {};
|
17 | * var Car = function() {};
|
18 | *
|
19 | * var isDuck = is.instanceOf(Duck);
|
20 | *
|
21 | * isDuck(new Duck); // true
|
22 | * // same as
|
23 | * is.instanceOf(Duck, new Duck); // true
|
24 | *
|
25 | * isDuck(new Car); // false
|
26 | *
|
27 | *
|
28 | * @param {Function} clazz
|
29 | * @param {*} [value]
|
30 | * @throws {TypeError} if class is not a function
|
31 | * @returns {(Boolean|Predicate)} bool if at least two arguments provided, otherwise a predicate
|
32 | */
|
33 | module.exports = function isInstanceOf(clazz) {
|
34 | if (!isFunction(clazz)) {
|
35 | throw new TypeError('Class must be a function');
|
36 | }
|
37 | return handleCurry.call(this, arguments, function isInstanceOfPredicate(value) {
|
38 | return value instanceof clazz;
|
39 | });
|
40 | };
|