Eine Property ist ein benanntes Datenfeld an einem Objekt, also das, was das Objekt über sich weiß.
- Property
Ein benanntes Feld an einem Objekt, in dem ein Wert liegt.
Beispiel: „Der Preis ist eine Property des Produkts, die Verfügbarkeit eine Methode.“Auch: Eigenschaft, Attribut, Feld. Die Wörter werden je nach Sprache verschieden gebraucht und meinen dasselbe.
Abgrenzung zur CSS-Eigenschaft: Dort heißt Property die linke Seite einer Deklaration, etwa color. Gleicher Name, anderes Gebiet.
Lesen und Schreiben
Angesprochen wird eine Property über einen Punkt hinter dem Objekt. Sie lässt sich lesen und in den meisten Sprachen auch überschreiben. Wird eine abgefragt, die es nicht gibt, kommt in JavaScript ein leerer Wert zurück statt eines Fehlers.
Daraus entsteht eine verbreitete Fehlerquelle: Ein Tippfehler im Namen bleibt unbemerkt und liefert still nichts. Erst wenn mit dem leeren Wert weitergerechnet wird, meldet sich das Problem, und zwar an anderer Stelle.
const produkt = { name: "Stuhl", preis: 89 };
produkt.preis; // 89
produkt.Preis; // undefined, grosses P
produkt.preis = 79; // überschreiben
// sicher zugreifen, wenn das Objekt fehlen kann:
bestellung?.kunde?.plz;Was nach außen gehört
Nicht jede Property soll von außen sichtbar sein. Was nur intern gebraucht wird, lässt sich in vielen Sprachen als privat kennzeichnen; in JavaScript geschieht das mit einem vorangestellten Doppelkreuz.
Der Gedanke dahinter ist die Kapselung: Von außen zählt, was ein Objekt kann, nicht wie es das ablegt. Wer sich daran hält, kann das Innere später ändern, ohne jede benutzende Stelle anzufassen.
Properties, die gerechnet werden
Nicht jede Property muss gespeichert sein. Viele Sprachen erlauben Felder, die beim Zugriff berechnet werden: Der Bruttopreis ergibt sich aus Netto und Steuersatz und liegt nirgends als eigener Wert.
Von außen ist das nicht zu unterscheiden, und genau das ist der Zweck. Ein gespeichertes Feld lässt sich später in ein berechnetes umwandeln, ohne dass eine einzige benutzende Stelle angefasst werden muss.