underscore.js provides the following method to find out if something is really an object:
_.isObject = function(obj) {
return obj === Object(obj);
};
UPDATE
Because of a previous bug in V8 and minor micro speed optimization, the method looks as follows since underscore.js 1.7.0 (August 2014):
_.isObject = function(obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
};