type.js 691 B

123456789101112131415161718192021222324
  1. var objToStr = require('./objToStr');
  2. var isNaN = require('./isNaN');
  3. var lowerCase = require('./lowerCase');
  4. var isBuffer = require('./isBuffer');
  5. exports = function(val) {
  6. var lower =
  7. arguments.length > 1 && arguments[1] !== undefined
  8. ? arguments[1]
  9. : true;
  10. var ret;
  11. if (val === null) ret = 'Null';
  12. if (val === undefined) ret = 'Undefined';
  13. if (isNaN(val)) ret = 'NaN';
  14. if (isBuffer(val)) ret = 'Buffer';
  15. if (!ret) {
  16. ret = objToStr(val).match(regObj);
  17. if (ret) ret = ret[1];
  18. }
  19. if (!ret) return '';
  20. return lower ? lowerCase(ret) : ret;
  21. };
  22. var regObj = /^\[object\s+(.*?)]$/;
  23. module.exports = exports;