TS: Objekttyp ermitteln

Hello,

ich weiß mal wieder nicht, was mit da angezeigt wird...

Ich möchte den Objekttyp eines Objektes ermitteln. Nehme ich das Objekt ganz normal in die Ausgabe, dann bekomme ich

[object HTMLInputElement]

angezeigt.

Versuche ich die Ausgabe mittels

Object.prototype.toString.apply(item) 

bekomme ich die gleiche Ausgabe.

Versuche ich nun aber

if (Object.prototype.toString.apply(item) == '[object HTMLInputElement]') 

dann gibt's auf die Finger mit der Meldung "ReferenceError: invalid assignment left-hand side"

Was wird mir nun also wann warum angezeigt? Und wie kann ich den Objekttyp wirklich richtig™️ abfragen?

Hier gleich einige der Standard-Gegenfragen prophilaktisch beantwortet:

  • Ich frag ja nur, weil ich's wissen will. Praktische Bedeutung wird es wohl nicht erlangen ;-)
  • Warum ich das wissen will? Weil ich unverschämt neugierig bin.
  • Ob ich schon gesucht habe? Na klar, was meint Ihr, woher ich diese eigenwillige Objekt-Behandlung habe.

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
  1. var output = '';
    for (var property in object) {
      output += property + ': ' + object[property]+'; ';
    }
    alert(output);
    

    Quelle war der erste Treffer bei Google

    Falls Du aber was anderes willst wäre das noch bei Google zu finden gewesen::

    Object.prototype.toString.call('abc');
    

    liefert: '[object String]'

    Kann man so verwenden:

    function getObjectType( obj ) {
        return Object.prototype.toString.call( obj ).slice( 8, -1 );
    }
    alert( getObjectType( 'abc' ) );
    

    liefert: 'String'

  2. Tach!

    Versuche ich nun aber

    if (Object.prototype.toString.apply(item) == '[object HTMLInputElement]') 
    

    dann gibt's auf die Finger mit der Meldung "ReferenceError: invalid assignment left-hand side"

    Den Fehler bekomme ich nur, wenn ich ein = statt zweier verwende.

    Was wird mir nun also wann warum angezeigt? Und wie kann ich den Objekttyp wirklich richtig™️ abfragen?

    Wenn console.log() das anzeigt, was du wissen möchtest, dann nimm das. Du brauchst es ja auch, um das Objekt genauer zu inspizieren. Ansonsten: Duck-Typing.

    dedlfix.

    1. Hello,

      Dank an beide!

      Der Fehler ist auch verschwunden. Ich weiß nur noch nicht warum. Muss erstmal die Versionen vergleichen. Vermutlich hatte sich mal wieder irgend ein unsichtbares Zeichen in den Source-Code gemogelt. Das passiert auf meinem lahmen Rechner und meinen dicken Fingern öfter mal.

      Schönen sonnigen 1. Mai noch Allen, die mitlesen :-)

      Liebe Grüße
      Tom S.

      --
      Es gibt nichts Gutes, außer man tut es
      Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.