Don P: nur array-kopie verändern

Beitrag lesen

Hallo,

Aber wie gesagt, ich finde es logisch, dass ein typeof null ein objekt ist, da null in meinen Pogrammen signalisiert, dass da ein Objekt erwartet wurde oder wird.

Logisch ist es, aber nicht besonders nützlich.

Soweit ich weiß, gibt es Datentypen u.a. deshalb, weil versch. Daten unterschiedlich viel Speicherplatz beanspruchen. Dem primitiven Wert null wäre durchaus zuzutrauen, dass er gleichviel Speicherplatz braucht wie ein veritables Objekt, und daher macht es vielleicht Sinn, ihn intern als Objekt anzusehen. Die Spezifikation sagt aber nicht, dass er ein Objekt ist, nur dass er u.a. eins repräsentieren kann.

Was typeof betrifft, so könnte der Operator das etwas lockerer sehen und 'null' sagen, wenn er null antrifft. Wenn mich jemand fragt, was da am Horizont auf dem Wasser schwimmt, sage ich auch "ein Schiff" und nicht "ein Fahrzeug", was zwar in gewisser Weise richtig wäre, aber eben nicht besonders hilfreich.

Dass du typeof dazu nutzen möchtest, um mit dem Objekt zu arbeiten ist halt in dem Fall ein kollateralschaden.

Kann man so sehen. Natürlich habe ich mir längst eine Krücke geklaubaut für den Fall, dass ich doch mal typeof wirklich benutzen will:

function typeOf(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;};  

Hässlich, aber funktioniert.

(instanceof Array soll nicht ganz zuverlässig sein: Wenn ein Array z.B. in einem anderen Frame erstellt wurde, versagt instanceof es angeblich, daher die Umstände beim Erkennen von Arrays)

Gruß, Don P