Objektorientierung in JavaScript/Objekte und Klassen/Das Objekt

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
Ein Objekt besitzt Attribute (Eigenschaften) und Methoden. Attribute beschreiben die Bedeutung und den Zustand eines Merkmals des Objekts, beispielsweise Seitenanzahl = 764. Methoden definieren das Verhalten eines Objekts. Es können zum Beispiel die Methoden einschalten(), drucken() oder warnungAusgeben() eines Druckers beschrieben (spezifiziert) und umgesetzt (implementiert) werden. Diese werden in Schlüssel-Werte-Paaren gespeichert.<br/><br/>
Objekte können durch Object Literals erstellt werden. Alle Attribute und Funktionen werden zwischen geschweiften Klammern definiert. Schlüssel und Werte werden durch einen Doppelpunkt getrennt.

<code id="56f902f08bf65">
var maria = {
  augenfarbe : "blau",
  haarfarbe : "braun",
  groesse : 1.71,
  sprechen : function(zuSagendes) {
    return "Maria: \"" + zuSagendes + "\"";
  }
};
</code>
<run id="56f902f08bfd6">
var zuSagendes = "Ich bin " + maria.groesse + "m groß.";
maria.sprechen(zuSagendes);
</run>
Als Schlüssel können Strings oder Numbers verwendet werden.

Eine zweite Möglichkeit bietet der Aufruf des Konstruktors von Object. Danach werden weitere Attribute und Methoden hinzugefügt.

<code id="a12bctu2015bg">
var maria = new Object();
maria.augenfarbe = "blau";
maria.haarfarbe = "braun";
</code>
<run id="a12bctu2015bg">
maria.haarfarbe;
</run>
Der Zugriff auf Werte des Objekts erfolgt durch Punkt- oder Klammer-Notation.
<run id="4hcfnep1ke">
maria.augenfarbe == maria["augenfarbe"];
</run>

Objekte können untereinander interagieren.
<code id="54hdfghjk">
var person1 = {
  vorname : "Alex",
  nachname : "Alexos",
  heiraten : function(gefragtePerson) {
    return "Willst du mich heiraten, " + gefragtePerson.vorname+ "? " + gefragtePerson.antwort(this);
  }
};
var person2 = {
  vorname: "Alexandra",
  nachname : "Alexis",
  antwort: function(fragendePerson) {
    if (fragendePerson.vorname == "Alex" && fragendePerson.nachname == "Alexos") {
      return "Ja!";
    } else {
      return "Nein.";
    }
  }
};
</code>
<run id="54hdfghjk">
person1.heiraten(person2);
</run>