When one with typeof
operator one gets type object
it falls into somewhat wast category...
In practice you might need to narrow it down to what sort of 'object' it actually is and
one way to do it is to use object constructor name to get what flavour of object it actually is: Object.prototype.toString.call(yourObject)
1. String
Object.prototype.toString.call("String")
"[object String]"
2. Number
Object.prototype.toString.call(42)
"[object Number]"
3. Bool
Object.prototype.toString.call(true)
"[object Boolean]"
4. Object
Object.prototype.toString.call(Object())
or
Object.prototype.toString.call({})
"[object Object]"
5. Function
Object.prototype.toString.call(function(){})
"[object Function]"
6. Date
Object.prototype.toString.call(new Date(2015,10,21))
"[object Date]"
7. Regex
Object.prototype.toString.call(new RegExp())
or
Object.prototype.toString.call(/foo/);
"[object RegExp]"
8. Array
Object.prototype.toString.call([]);
"[object Array]"
9. Null
Object.prototype.toString.call(null);
"[object Null]"
10. Undefined
Object.prototype.toString.call(undefined);
"[object Undefined]"
11. Error
Object.prototype.toString.call(Error());
"[object Error]"