was alert sagt
bleicher
- javascript
Grüße,
wie greift man auf den wert, bzw "das" zu, was alert ausgibt, wenn man versucht ein object auszugeben?
zB wen [object SQLResultSet] - das ist keine eigenschaft auch auch nicht typeof von einem sqlresultset- wie bestimmt man diese "eigenschaft" von einem object?
MFG
bleicher
Hallo,
zB wen [object SQLResultSet] - das ist keine eigenschaft auch auch nicht typeof von einem sqlresultset- wie bestimmt man diese "eigenschaft" von einem object?
alert(o) gibt z.B. den String "[object SQLResultSet]" aus, meinst du diesen String?
Gerade heute hier gelernt: Wenn z.B. die Variable o auf dein Objekt verweist, bekommst du den String in die Variable s mit
s = Object.prototype.toString.call(o);
Falle es wirklich klappt und du das auch gemeint hast, bedanke dich bei Kai345 :)
Gruß, Don P
Grüße,
jep - es klappt ^^ danke dir und kai345 :)
MFG
bleicher
Grüße,
es klappt sogar ein tick einfacher - o.toString();
MFG
bleicher
[latex]Mae govannen![/latex]
es klappt sogar ein tick einfacher - o.toString();
Wenn man vorher sichergestellt hat, daß „o“ wirklich ein echtes Objekt (Literal, mit new Object() erzeugt, Instanz, ...) ist und auch keine "Custom" toString-Methode existiert. Also nur für kontrollierbare Umgebungen (sprich: eigener Computer debugging) geeignet.
Cü,
Kai
Wenn man vorher sichergestellt hat, daß „o“ wirklich ein echtes Objekt (Literal, mit new Object() erzeugt, Instanz, ...) ist und auch keine "Custom" toString-Methode existiert. Also nur für kontrollierbare Umgebungen (sprich: eigener Computer debugging) geeignet.
Wieso? jedes Objekt hat eine toString() Methode und alles ist ein Object.
Struppi.
[latex]Mae govannen![/latex]
Wenn man vorher sichergestellt hat, daß „o“ wirklich ein echtes Objekt (Literal, mit new Object() erzeugt, Instanz, ...) ist und auch keine "Custom" toString-Methode existiert. Also nur für kontrollierbare Umgebungen (sprich: eigener Computer debugging) geeignet.
Wieso? jedes Objekt hat eine toString() Methode und alles ist ein Object.
Natürlich. Aber bei Funktionen, Arrays etc. wird halt in diesem Fall im Gegensatz zu Object.prototoype.toString.call(obj)
nicht [object Function] oder [object Array] zurückgegeben, sondern (z.B. bei selbstdefinierten Funktionen der komplette) Code/Inhalt. obj.toString()
ist also nicht wie bleicher annimmt grundsätzlich äquivalent zu der ursprünglichen Lösung, sondern nur bei echten Objekten, und auch nur dann, wenn die ursprüngliche toString()-Methode verwendet wird.
Cü,
Kai
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