UNPKG

976 BJavaScriptView Raw
1'use strict';
2
3var 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 */
33module.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};