Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #8193

Re: Object-Eigenschaften auslesen

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!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail
Content-Type text/plain; charset="UTF-8"
Message-ID <4691760.CfJmLsVOf1@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Reply-To Thomas 'PointedEars' Lahn <cljs@PointedEars.de>
Organization PointedEars Software (PES)
Date Thu, 10 Nov 2011 13:43:35 +0100
User-Agent KNode/4.4.11
Content-Transfer-Encoding 8Bit
Subject Re: Object-Eigenschaften auslesen
Newsgroups comp.lang.javascript, de.comp.lang.javascript
References <9i0bc3FbnmU1@mid.individual.net>
Followup-To de.comp.lang.javascript
MIME-Version 1.0
Lines 100
NNTP-Posting-Date 10 Nov 2011 13:43:36 CET
NNTP-Posting-Host 18208995.newsspool1.arcor-online.net
X-Trace DXC=aWSPHkQ>]Y2Tia]Ho99G50ic==]BZ:af>4Fo<]lROoR1<`=YMgDjhg21W8`eFm\jm0DZm8W4\YJN<UFDj8T]K0?3DmniOZG;K0;6Jlnh<0Xl`8
X-Complaints-To usenet-abuse@arcor.de
Xref x330-a1.tempe.blueboxinc.net comp.lang.javascript:8193

Cross-posted to 2 groups.

Followups directed to: de.comp.lang.javascript

Show key headers only | View raw


Jörg Weule wrote:

> wenn ich ein Objekt über JSON geladen habe und die Eigenschaften nicht
> kenne. Wie kann ich die Namen der Eigenschaften des Objektes durchlaufen?
> 
> Selfhtml schreibt zur Definition von Objekten als Beispiel:

SELFHTML eignet sich nicht als (JavaScript/ECMAScript-)Referenz.  Nicht nur, 
weil es hoffnungslos veraltet ist.  Sorry.
 
> function Farbe (R, G, B) {
>    this.R = R;
>    this.G = G;
>    this.B = B;
>    this.hex = "#";
> }
> 
> var Hintergrund = new Farbe("E0", "FF", "E0");

Sauberer Codestil sieht (ansatzweise) so aus:

  function Farbe(r, g, b)
  {
    this.r = r;
    this.g = g;
    this.b = b;
    this.hex = "#";
  }
  
  var hintergrund = new Farbe("E0", "FF", "E0");

Nur Konstruktoren, Factorys und Konstanten (bzw. als Konstante verwendete 
Eigenschaften) sollten Bezeichner mit grossem Anfangsbuchstaben haben.

Weiterhin würde man hier sinnvollerweise durchgängig Englisch verwenden und 
den Eigenschaften sprechende Namen geben.  Ausserdem würde man die 
Komponenten als Zahlen speichern, und nur für die Ausgabe bzw. Verwendung in 
HTML/CSS in eine Zeichenfolge konvertieren (flexibler).  Zum Beispiel so:

  String.prototype.padLeft = function(width, padChar) {
    var s = String(this);
    var len = s.length;
    if (width > len) 
    {
      var a = [];
      a.length = width - len + 1;
      return a.join(padChar) + s;
    }

    return s;
  };

  String.prototype.leadingZero = function(width) {
    return String(this).padLeft(width, "0");
  };

  function Color(red, green, blue)
  {
    this.red = red;
    this.green = green;
    this.blue = blue;
  }
  
  Color.prototype.toHex = function() {
    return "#" + this.red.toString(16).leadingZero(2)
               + this.green.toString(16).leadingZero(2)
               + this.blue.toString(16).leadingZero(2);
  };

  var bgColor = new Color(0xE0, 0xFF, 0xE0);

(Negative Zahlen werden hier noch nicht berücksichtigt, ist aber in diesem 
Beispiel auch nicht notwendig.  Vgl. 
<http://PointedEars.de/websvn/filedetails.php?repname=JSX&path=%2Ftrunk%2Fdom%2Fcss%2Fcolor.js>)
 
> Wie kann ich die Eigenschaften-Namen "R", "G", "B" und "hex" des
> Objektes Hintergrund ermitteln.

Es gibt kein Objekt "Hintergrund".  Objekte haben eine Identität, (i. d. R.) 
keinen Namen.  `hintergrund' (bzw. in Deinem Code `Hintergrund') ist 
lediglich der Bezeichner einer Variablen.  Diese Variable speichert 
(aktuell) eine Referenz auf das mit `new Farbe(…)' erzeugte Objekt.  Ein 
Objekt kann von mehreren Variablen/Eigenschaften referenziert werden.

Auf die Objekteigenschaften kannst Du dann mittels Punkt-Zugriffssyntax –

  hintergrund.red

– oder (falls das nicht geht, siehe andere Antwort) mittels Klammer-
Zugriffssyntax –

  hintergrund["red"]

– zugreifen (Gross-/Kleinschreibung beachten).

X-Post & F'up2 de.comp.lang.javascript.  comp.lang.javascript ist die 
internationale Newsgroup, hier kommst Du deshalb mit Englisch am weitesten.

-- 
When all you know is jQuery, every problem looks $olvable.

Back to comp.lang.javascript | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Object-Eigenschaften auslesen Jörg Weule <weule@7b5.de> - 2011-11-09 22:58 +0100
  Re: Object-Eigenschaften auslesen Andreas Bergmaier <andber93@web.de> - 2011-11-09 23:48 +0100
    Re: Object-Eigenschaften auslesen Jörg Weule <weule@7b5.de> - 2011-11-10 08:59 +0100
    Re: Object-Eigenschaften auslesen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-11-10 11:32 +0100
  Re: Object-Eigenschaften auslesen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-11-10 13:43 +0100

csiph-web