Und noch etwas:
typeof ist gedacht zur Unterscheidung von Objects und Primitives und, wenn letzteres, Unterscheidung nach Primitives. Das ist alles.
typeof kann z.B. auch 'function' zurückgeben, obwohl eine Funktion auch nur ein Objekt ist. Das macht aber natürlich Sinn, genau wie ein typeof [] === 'array' Sinn machen würde, während das typeof null === 'object' eben gar keinen Sinn macht.
Ich benutze jedenfalls folgende Funktion typeOf(), die 'null' für null und 'array' für ein Array liefert, und bin glücklich damit:
[code lang = javascript]
var typeOf = function (v){var s=typeof v;if(s!=='object'){return s;}if(!v){return'null';}if(typeof v.length==='number'&&!(v.propertyIsEnumerable('length'))&&typeof v.splice==='function'){return'array';}return s;};
[/code]
Gruß, Don P