Una alternativa al método de Sir, auqnue me gusta más la de él...
Podés hacerlo de una manera simple, definiendo un método como prototype para los distintos tipos de objetos. Si la adjuntás a object, y después a array, esta última va a pisar la primera.
Ejemplo
Código PHP:
<html>
<head>
<script type="text/javascript">
Object.prototype.type = function() { return "object"; }
Array.prototype.type = function() { return "array"; }
Date.prototype.type = function() { return "date"; }
function getType(v) {
if (typeof v == "object") return v.type();
return (typeof v)
}
var algo = new Date();
alert(getType(algo));
</script>
</head>
<body>
</body>
</html>