Der Internet Explorer 9 aus Entwicklersicht (Teil 4)
Kommentare

Verbesserte Objektfunktionen
JavaScript wurde zu Beginn lediglich dazu eingesetzt, um Formularprüfungen und kleinere visuelle Effekte zu realisieren. Mit JavaScript kann aber auch objektorientiert programmiert

Verbesserte Objektfunktionen

JavaScript wurde zu Beginn lediglich dazu eingesetzt, um Formularprüfungen und kleinere visuelle Effekte zu realisieren. Mit JavaScript kann aber auch objektorientiert programmiert werden. Die dazu notwendigen Implementierungen sind allerdings nicht vergleichbar mit gängigen OO-Programmiersprachen. Da nicht die gesamte Syntax der Sprachbasis verändert werden kann, wurden im ES5 einige Funktionen definiert, um den Implementierungsprozess besser zu unterstützen. Weiterhin soll die Erstellung von wiederverwertbarem Code verbessert werden. Konkret wurden Optimierungen u. a. in den folgenden Bereichen realisiert:

  • Anlage von Objekten (object.create)
  • Klonen von Objekten
  • Vereinfachtes Prototyping
  • „Echte“ Eigenschaften (get/set) eingeführt

Listing 3 zeigt die Verwendung einiger neuer Funktionen. Die Methode CreateObject zeigt die Anwendung der Methode Object.create. Diese Methode kann zur vereinfachten Anlage eines Objekts verwendet werden und macht die prototype-Syntax überflüssig. Die Erweiterung eines Objekts kann ebenfalls über die Methode Object.create durchgeführt werden, wie es die Methode ExtendObject in Listing 3 zeigt. Bei dem Aufruf von Object.create können zusätzliche Eigenschaften definiert werden. Auch die Anlage komplexer Eigenschaften ist möglich. Hierfür kann die Methode Object.defineProperty eingesetzt werden. Dem neu definierten Objekt employee wird über Object.defineProperty die Eigenschaft fullname zugewiesen. Diese Eigenschaft bestimmt den vollständigen Namen aus den Werten von firstname und lastname.

Die Anlage von erweiterten Eigenschaften zeigt das letzte Beispiel aus Listing 3. Die gesamte Eigenschaft wird innerhalb einer Funktion gekapselt, somit ist die interne Variable salaryValue nicht von außen erreichbar. Danach wird dem Objekt person die neue Eigenschaft über Object.defineProperty zugewiesen. Innerhalb der get/set-Funktionen können bei jedem Zugriff zusätzliche Aktionen durchgeführt werden. So kann z. B. auch ein Wert innerhalb der set-Eigenschaft abgelehnt werden, wenn dieser nicht gültig ist. Die Methode UseGetSet zeigt die Verwendung der neuen Eigenschaft.

Listing 3

var person = {
  firstname: "unknown",
  lastname: "unknown",
  salutation: "unknown",
  created: Date(NaN)
};
// Verwendung von Object.create statt prototype
function CreateObject() {
  var contact = Object.create(person);
  alert(contact.firstname);
}
// Erweiterung eines Objektes
function ExtendObject() {
  var employee = Object.create(person, {
    staffNo: { value: "unknown" }
  });
  // Erweiterung um eine berechnete Eigenschaft
  Object.defineProperty(employee, "fullName",
  {
    get: function () {
      return this.firstname + " " + this.lastname;
      }
  });
}
// Unterstützung von get/set Eigenschaften
(function () {
  var salaryValue = "0.00";

  Object.defineProperty(person, "salary", {
    get: function () { return salaryValue; },
    set: function (value) {
      salaryValue = value;
      alert("Neues Gehalt wurde gesetzt");
    }
  });
})();

function UseGetSet()
{
  var contact = Object.create(person);
  contact.salary = "1000";
  alert(contact.salary);
}  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -