Skip to content

Instantly share code, notes, and snippets.

@gnclmorais
Forked from jonbretman/type.js
Created December 3, 2013 15:19
Show Gist options
  • Save gnclmorais/7770957 to your computer and use it in GitHub Desktop.
Save gnclmorais/7770957 to your computer and use it in GitHub Desktop.
(function (root) {
var type = function (o) {
// handle null in old IE
if (o === null) {
return 'null';
}
// handle DOM elements
if (o && (o.nodeType === 1 || o.nodeType === 9)) {
return 'element';
}
var s = Object.prototype.toString.call(o);
var type = s.match(/\[object (.*?)\]/)[1].toLowerCase();
// handle NaN and Infinity
if (type === 'number') {
if (isNaN(o)) {
return 'nan';
}
if (!isFinite(o)) {
return 'infinity';
}
}
return type;
};
var types = [
'Null',
'Undefined',
'Object',
'Array',
'String',
'Number',
'Boolean',
'Function',
'RegExp',
'Element',
'NaN',
'Infinite'
];
var generateMethod = function (t) {
type['is' + t] = function (o) {
return type(o) === t.toLowerCase();
};
};
for (var i = 0; i < types.length; i++) {
generateMethod(types[i]);
}
if (typeof exports === "object" && exports) {
exports = type;
}
else if (typeof define === "function" && define.amd) {
define(type);
}
else {
root.type = type;
}
})(this);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment