molily: was alert sagt

Beitrag lesen

wie greift man auf den wert, bzw "das" zu, was alert ausgibt, wenn man versucht ein object auszugeben?

alert() wandelt den Parameter in einen String um, indem es obj.toString() aufruft. Wie diese toString-Methode aussieht, hängt ganz vom jeweiligen Objekt ab.

zB wen [object SQLResultSet] - das ist keine eigenschaft auch auch nicht typeof von einem sqlresultset- wie bestimmt man diese "eigenschaft" von einem object?

»SQLResultSet« ist die interne [[Class]]-Eigenschaft des Objektes. Die hat der Browser beim Erzeugen so gesetzt. Bei den nativen ECMAScript-Objekten, z.B. Array, korrespondiert dieser Name mit dem Namen des Konstruktors, z.B. "[object Array]" bei Instanzen von window.Array. Das ist bei SQLResultSet aus HTML5 Web SQL Databse in den mir bekannten Browsern nicht der Fall.

Wie Kai sagt, Object.prototype.toString - also die ganz allgemeine toString-Funktion aller Objekte - ist oft durch die spezifischeren Prototypen in der Prototype-Chain überschrieben. Daher macht es ggf. Sinn, diese generische Methode direkt auf das Objekt anzuwenden, also Object.prototype.toString.call(obj). Denn dessen Verhalten ist festgelegt:

http://bclary.com/log/2004/11/07/#a-8.6.2
http://bclary.com/log/2004/11/07/#a-15.2.4.2

Das setzt aber voraus, dass die [[Class]]-Eigenschaft korrekt gesetzt ist. Das ist wie gesagt nur für die ECMAScript-Core-Konstruktoren definiert.

Wozu brauchst du diesen Wert denn? Willst du prüfen, ob ein Objekt vom Typ SQLResultSet ist?

Mathias