Hi,
Du hast es mit einem „echten“ Objekt zu tun, so „echt“, wie Objekte nur sein können.
Sicher nicht. Wo steht denn das? Irgendein Beweis in Sicht (außer dass typeof es uns vorgaukelt)?
typeof gaukelt dir nichts vor, sondern es ist *definiertes* Verhalten, dass typeof null „object” liefert.
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf, 11.4.3 The typeof Operator
Ich verstehe echt nicht, warum du derart oft den Bedarf siehst, definiertes Verhalten in der Art und Weise zu diskutieren, in der du es oftmals tust.
Aber stell' dir eine Datenstruktur vor, die irgenwann mal befüllt wurde mit verschiedenen Funktionsergebnissen, zum Teil Objekte, auch mal null z.B. durch getElementById oder eine andere Funktion, zum Teil Zahlen, Strings, Booleans...
Vielleicht sind solche „Datenstrukturen“ dein eigentliches Problem?
Ich sehe selten die Notwendigkeit, typeof überhaupt zu verwenden.
Wenn du natürlich erst mal alles auf einen großen Haufen schmeißt, dann ist es nachvollziehbar, dass du diesen Klumpatsch auch mühsam wieder auseinanderklamüsern musst. Der Versuch, eierlegende Wollmilchsäue zu programmieren, hat natürlich auch seine Nachteile.
Kennst du denn ein geeigneteres Werkzeug, um z.B. gezielt die Objekte in besagter Datenstruktur anzusprechen um ihnen z.B. eine neue Eigenschaft zu geben?
Meine Datenstrukturen baue ich möglichst so auf, dass ich schon weiss, was ich wo rein gepackt habe - dann muss ich nicht erst beim Herausfischen alles drei mal hin- und herdrehen und überlegen, „was hab ich hier eigentlich gerade in der Hand ...?“
Was würde man verlieren, wenn typeof null als Ergebnis 'null' lieferte und typeof [] als Ergebnis 'array'?
Richtig: Gar nichts würde man verlieren außer dem Nachteil, solches ggf. umständlich durch zusätzlichen Code in Erfahrung bringen zu müssen, was also de facto ein Vorteil wäre.
Alles gut und schön - aber leider hast du zu spät angefangen, Einfluss auf die ECMAScript-Spezifikation zu nehmen, und jetzt ist sie nun mal so, wie sie ist.
MfG ChrisB
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]