Может будет интересно, часто вижу кривые определения типа объекта, например
Array определяется по наличию метода
concat
Сделал для себя функцию
typeOf - надстройку над стандартной
function typeOf( arg ){
var t = typeof(arg);
if( arg === null ){
return 'null';
}else if( t == 'object' ){
t = Object.prototype.toString.call( arg )
return t.substr( 8, t.length - 9 ).toLowerCase();
}else{
return t;
}
}
// ну и проверочка
function log( arg ){
console.log( typeOf( arg ),' > ', arg );
}
log()
log({})
log([])
log('ggg')
log(888)
log( /\g\/i/ )
log(null)
log( function(){} );
Скопируй в консоль и нажми ENTER