added is.class based on es6 class implementation
This commit is contained in:
parent
103c5afe6f
commit
0a06209d05
2 changed files with 10 additions and 1 deletions
3
index.js
3
index.js
|
|
@ -62,6 +62,7 @@ is.symbol = x => typeof x === 'symbol';
|
||||||
|
|
||||||
is.array = Array.isArray;
|
is.array = Array.isArray;
|
||||||
is.function = x => typeof x === 'function';
|
is.function = x => typeof x === 'function';
|
||||||
|
is.class = x => typeof x === 'function' && /^\s*class\s+/.test(x.toString());
|
||||||
is.buffer = Buffer.isBuffer;
|
is.buffer = Buffer.isBuffer;
|
||||||
|
|
||||||
is.object = x => {
|
is.object = x => {
|
||||||
|
|
@ -130,7 +131,7 @@ is.plainObject = x => {
|
||||||
// eslint-disable-next-line no-return-assign
|
// eslint-disable-next-line no-return-assign
|
||||||
return getObjectType(x) === 'Object' &&
|
return getObjectType(x) === 'Object' &&
|
||||||
(prototype = Object.getPrototypeOf(x), prototype === null ||
|
(prototype = Object.getPrototypeOf(x), prototype === null ||
|
||||||
prototype === Object.getPrototypeOf({}));
|
prototype === Object.getPrototypeOf({}));
|
||||||
};
|
};
|
||||||
|
|
||||||
is.iterable = x => !is.null(x) && !is.undefined(x) && typeof x[Symbol.iterator] === 'function';
|
is.iterable = x => !is.null(x) && !is.undefined(x) && typeof x[Symbol.iterator] === 'function';
|
||||||
|
|
|
||||||
8
test.js
8
test.js
|
|
@ -6,6 +6,7 @@ const isNode8orHigher = Number(process.versions.node.split('.')[0]) >= 8;
|
||||||
|
|
||||||
const PromiseSubclassFixture = class extends Promise {};
|
const PromiseSubclassFixture = class extends Promise {};
|
||||||
const ErrorSubclassFixture = class extends Error {};
|
const ErrorSubclassFixture = class extends Error {};
|
||||||
|
const ClassFixture = class A {};
|
||||||
|
|
||||||
const types = new Map([
|
const types = new Map([
|
||||||
['undefined', undefined],
|
['undefined', undefined],
|
||||||
|
|
@ -28,6 +29,9 @@ const types = new Map([
|
||||||
[1, 2],
|
[1, 2],
|
||||||
new Array(2)
|
new Array(2)
|
||||||
]],
|
]],
|
||||||
|
['class', [
|
||||||
|
new ClassFixture()
|
||||||
|
]],
|
||||||
['function', [
|
['function', [
|
||||||
function foo() {}, // eslint-disable-line func-names
|
function foo() {}, // eslint-disable-line func-names
|
||||||
function () {},
|
function () {},
|
||||||
|
|
@ -130,6 +134,10 @@ test('is.array', t => {
|
||||||
testType(t, 'array');
|
testType(t, 'array');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('is.class', t => {
|
||||||
|
testType(t, 'function');
|
||||||
|
});
|
||||||
|
|
||||||
test('is.function', t => {
|
test('is.function', t => {
|
||||||
testType(t, 'function');
|
testType(t, 'function');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue