How to get exactly typeof - object / array / null ..?

var obj = {},ar = [],nothing=null,empty=undefined,word ='string',headorTail = true; console.log(typeof obj) //object console.log(typeof ar)//object console.log(typeof nothing)//object console.log(typeof empty)//undefined console.log(typeof word)//string console.log(typeof headorTail)//boolean 

But how can I get the type obj, ar, nothing like "object, array,null" - what is the best way to achieve this?

+4
source share
4 answers

If you are using jQuery, you can use jQuery.type :

 jQuery.type(true) === "boolean" jQuery.type(3) === "number" jQuery.type("test") === "string" jQuery.type(function(){}) === "function" jQuery.type([]) === "array" jQuery.type(new Date()) === "date" jQuery.type(/test/) === "regexp" 

Everything else returns "object" as its type.

+3
source

You can try to retrieve the name of the constructor, and you don't need jQuery:

 function safeConstructorGet(obj) { try { console.log(obj.constructor.name) //object } catch (e) { console.log(obj) } } safeConstructorGet(obj); //Object safeConstructorGet(ar); //Array safeConstructorGet(nothing); //null safeConstructorGet(empty); //undefined safeConstructorGet(word); //String safeConstructorGet(headorTail); //Boolean 
+2
source
 function getType(obj) { // Object.toString returns something like "[object Type]" var objectName = Object.prototype.toString.call(obj); // Match the "Type" part in the first capture group var match = /\[object (\w+)\]/.exec(objectName); return match[1].toLowerCase(); } // Test it! var arr = [null, undefined, {}, [], 42, "abc"]; arr.forEach(function(e){ console.log(getType(e)); }); 

See Object.toString in MDN.

+2
source

Even that is too good!

 function getType(v) { return (v === null) ? 'null' : (v instanceof Array) ? 'array' : typeof v; } var myArr = [1,2,3]; var myNull = null; var myUndefined; var myBool = false; var myObj = {}; var myNum = 0; var myStr = 'hi'; 
+1
source

Source: https://habr.com/ru/post/1447133/


All Articles