Detectar tipos con typeof puede ser un problema por los falsos positivos. Te aconsejaría usar la siguiente técnica:
Código Javascript
:
Ver originalObject.prototype.toString.call(/a/); // "[object RegExp]
Object.prototype.toString.call([]); // "[object Array]"