GetTypeOf
Returns type of javascript object
by Alexey Demin
HTML
<textarea id="output"></textarea>
CSS
body, textarea {
margin: 0;
overflow:hidden;
}
textarea {
width: 100vw;
height: 100vh;
overflow:hidden;
resize: none;
}
JavaScript
var getTypeOf = function(obj) {
if (typeof obj == "undefined") { return "undefined"; }
if (obj === null) { return "null"; }
return Object.getPrototypeOf(obj).constructor.name;
},
testData = [
{ value: undefined, displayValue: "undefined", expected: "undefined" },
{ value: null, displayValue: "null", expected: "null" },
{ value: {}, displayValue: "{}", expected: "Object" },
{ value: new Object(), displayValue: "new Object()", expected: "Object" },
{ value: [], displayValue: "[]", expected: "Array" },
{ value: new Array(), displayValue: "new Array()", expected: "Array" },
{ value: "", displayValue: "\"\"", expected: "String" },
{ value: new String(), displayValue: "new String()", expected: "String" },
{ value: 0, displayValue: "0", expected: "Number" },
{ value: 1, displayValue: "1", expected: "Number" },
{ value: Number.NaN, displayValue: "Number.NaN", expected: "Number" },
{ value: new Number(), displayValue: "new Number()", expected: "Number" },
{ value: true, displayValue: "true", expected: "Boolean" },
{ value: false, displayValue: "false", expected: "Boolean" },
{ value: new Boolean(), displayValue: "new Boolean()", expected: "Boolean" },
{ value: /^[0-9]+$/ig, displayValue: "/^[0-9]+$/ig", expected: "RegExp" },
{ value: new RegExp(), displayValue: "new RegExp()", expected: "RegExp" },
{ value: new Date(), displayValue: "new Date()", expected: "Date" }
];
testData.forEach(function(item, idx){
var output = function(val){
var output = document.getElementById("output");
output.innerHTML = output.innerHTML + val + "\n";
}
output(`${item.displayValue} -> ${getTypeOf(item.value) !== item.expected ? "fail" : "success"}`);
});