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


Groups > comp.lang.javascript > #8193

Re: Object-Eigenschaften auslesen

Message-ID <4691760.CfJmLsVOf1@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2011-11-10 13:43 +0100
Subject Re: Object-Eigenschaften auslesen
Newsgroups comp.lang.javascript, de.comp.lang.javascript
References <9i0bc3FbnmU1@mid.individual.net>
Followup-To de.comp.lang.javascript

Cross-posted to 2 groups.

Followups directed to: de.comp.lang.javascript

Show all headers | 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