Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.42!gegeweb.eu!nntpfeed.proxad.net!proxad.net!feeder2-2.proxad.net!newsfeed.arcor.de!newsspool4.arcor-online.net!news.arcor.de.POSTED!not-for-mail Content-Type: text/plain; charset="UTF-8" Message-ID: <2329119.96fDOHNxE3@PointedEars.de> From: Thomas 'PointedEars' Lahn Reply-To: Thomas 'PointedEars' Lahn Organization: PointedEars Software (PES) Date: Thu, 10 Nov 2011 11:32:14 +0100 User-Agent: KNode/4.4.11 Content-Transfer-Encoding: 8Bit Subject: Re: Object-Eigenschaften auslesen Newsgroups: comp.lang.javascript References: <9i0bc3FbnmU1@mid.individual.net> Followup-To: de.comp.lang.javascript MIME-Version: 1.0 Lines: 70 NNTP-Posting-Date: 10 Nov 2011 11:32:15 CET NNTP-Posting-Host: 847c539b.newsspool1.arcor-online.net X-Trace: DXC=ceNFUJBi_VnFXUDVUnEXQmic==]BZ:afn4Fo<]lROoRa<`=YMgDjhgbX2bFj^_o8maDZm8W4\YJNlUFDj8T]K0?cDmniOZG;K0kFnTDm=i^ZA` X-Complaints-To: usenet-abuse@arcor.de Xref: x330-a1.tempe.blueboxinc.net comp.lang.javascript:8192 Andreas Bergmaier wrote: > Jörg Weule schrieb: >> Selfhtml schreibt zur Definition von Objekten als Beispiel: >> >> function Farbe (R, G, B) { >> this.R = R; >> this.G = G; >> this.B = B; >> this.hex = "#"; >> } >> >> var hintergrund = new Farbe("E0", "FF", "E0"); > > Das hier ist ein Objekt, das mithilfe eines Konstruktors erstellt wurde. > Wenn du hintergrund instanceof Farbe überprüfst, kannst du davon > ausgehen dass das Objekt die beschriebenen Eigenschaften hat. > > Dein JSON-gelesenes Objekt hingegen ist "typlos". Nein, es handelt sich auch um einen Wert vom Typ `Object' mit .[[Class]] === "[object Object]" und um eine `Object'-Instanz (.constructor == Object). Bei dem oben von `hintergrund' referenzierten Objekt handelt es sich um einen Wert vom Typ `Object' mit .[[Class]] === "[object Object]", jedoch um eine `Farbe'-Instanz (.constructor == Farbe). > Als Literal ließe es sich auch so schreiben: > var hintergrund = {R:"E0", G:"FF", B:"E0", hex:"#"}; Das ist nämlich äquivalent zu var hintergrund = new Object(); hintergrund.R = "E0"; hintergrund.G = "FF"; hintergrund.B = "E0"; hintergrund.hex = "#"; > Hier kommst du nur mit der for-in-Schleife weiter. Was das Aufzählen der eigenen Eigenschaften betrifft, ja. >> Wie kann ich die Eigenschaften-Namen "R", "G", "B" und "hex" des >> Objektes Hintergrund ermitteln. > > Einfach auslesen? Es gibt verschiedene Schreibweisen, an > Objekteigenschaften zu kommen. Erstere kann man nur verwenden, wenn die > Eigenschaftsnamen den Namenskonventionen entsprechen (z.B. keine > Leerzeichen). Genauer: Wenn es sich um einen *Bezeichner* (/Identifier/) handelt. > alert("Der Rotton ist "+hintergrund.R); > alert("Der Grünton ist "+hintergrund["G"]); window.alert(…); oder console.log(…); F'up2 de.comp.lang.javascript PointedEars -- realism: HTML 4.01 Strict evangelism: XHTML 1.0 Strict madness: XHTML 1.1 as application/xhtml+xml -- Bjoern Hoehrmann