123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * type-name - Just a reasonable typeof
- *
- * https://github.com/twada/type-name
- *
- * Copyright (c) 2014-2016 Takuto Wada
- * Licensed under the MIT license.
- * https://github.com/twada/type-name/blob/master/LICENSE
- */
- 'use strict';
- var toStr = Object.prototype.toString;
- function funcName (f) {
- if (f.name) {
- return f.name;
- }
- var match = /^\s*function\s*([^\(]*)/im.exec(f.toString());
- return match ? match[1] : '';
- }
- function ctorName (obj) {
- var strName = toStr.call(obj).slice(8, -1);
- if ((strName === 'Object' || strName === 'Error') && obj.constructor) {
- return funcName(obj.constructor);
- }
- return strName;
- }
- function typeName (val) {
- var type;
- if (val === null) {
- return 'null';
- }
- type = typeof val;
- if (type === 'object') {
- return ctorName(val);
- }
- return type;
- }
- module.exports = typeName;
|