Angus Croll recently wrote an interesting blog post about this –
Fixing the JavaScript typeof operator
He goes through the pros and cons of the various methods then defines a new method ‘toType’ –
var toType = function(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
}