Hallo,
Es wäre m.E. eben sinnvoll, wenn 'array' herauskäme. Wegen typeof "" === 'string', typeof 0 === 'number', typeof false === 'boolean' usw. wäre es einfach schön, wenn auch typeof [] === 'array' gelten würde.
Du wiederholst dich. Sowohl Sven als auch du selbst haben aber schon gesagt, warum dies eine Inkonsistenz wäre, würde man nicht komplett den Unterschied zwischen typeof und constructor aufweichen, sodass auch typeof(new MeinKonstruktor) == "MeinKonstruktor" wäre.
Wenn ich ein Array habe, dann interessiert es mich nicht wirklich, dass es auch ein Objekt ist
...dann verwende nicht typeof, sondern den Operator bzw. die Eigenschaft, die das liefern, was dich interessiert.
Ein Array ist aber schon nochmal etwas besonderes, in allen anderen Programmiersprachen ist das bekanntlich ein eigener, nicht unwichtiger Datentyp.
JavaScript hat halt ein ziemlich einzigartiges Typenkonzept.
Wenn man schon einen typeof Operator in einer ansonsten schier typlosen Sprache etabliert, dann sollte der doch auch sinnvolle Ergebnisse liefern, meine ich.
Was typeof leisten soll, leistet es vorzüglich. Für andere Aufgaben sind andere Methoden bereits vorgesehen.
Ich will hier nicht über ein potenziell besseres JavaScript spekulieren. Innerhalb vom jetzigen JavaScript hat typeof die von mir beschriebene Funktion und innerhalb dieses Rahmens ist es auch sinnvoll, dass typeof nicht identisch mit constructor bzw. instanceof ist.
Mathias