Der Prototype Design Pattern in JavaScript

Der „Prototype Design Pattern“ in JavaScript ermöglicht das Erzeugen von Klonen von Objekten, die in verschiedenen Teilen einer Anwendung verwendet werden können, ohne die aufwändige Erstellung jedes Mal zu wiederholen. Wir zeigen Ihnen die Grundlagen.

Das Konzept des Prototype Design Patterns

Der Prototype Design Pattern ist ein wichtiges Konzept in JavaScript, das auf dem Prinzip des prototypischen Vererbens basiert. Viele JavaScript-Entwickler sind entweder auf das Schlüsselwort „prototype“ gestoßen, haben sich über die prototypische Vererbung gewundert oder Prototypen in ihrem Code implementiert. Dieses Muster nutzt das JavaScript-Prototypenmodell, um in leistungsintensiven Situationen Objekte zu erstellen.

Die erstellten Objekte sind Klone (flache Klone) des Originalobjekts, die weitergegeben werden können. Ein Anwendungsfall des Prototype-Musters besteht darin, aufwändige Datenbankoperationen zur Erstellung eines Objekts für andere Teile der Anwendung zu vermeiden. Anstatt dieselbe aufwändige Operation erneut durchzuführen, kann es vorteilhaft sein, das zuvor erstellte Objekt zu klonen.

Verwendung des Prototype-Musters

Um ein Objekt zu klonen, muss ein Konstruktor vorhanden sein, um das erste Objekt zu instanziieren. Anschließend werden mithilfe des Schlüsselworts „prototype“ Variablen und Methoden an die Struktur des Objekts gebunden. Hier ist ein einfaches Beispiel:

var TeslaModelS = function() {
    this.numWheels    = 4;
    this.manufacturer = 'Tesla';
    this.make         = 'Model S';
}

TeslaModelS.prototype.go = function() {
    // Räder drehen
}

TeslaModelS.prototype.stop = function() {
    // Bremsbeläge anwenden
}


Der Konstruktor ermöglicht die Erstellung eines einzelnen TeslaModelS-Objekts. Wenn ein neues TeslaModelS-Objekt erstellt wird, behält es die im Konstruktor initialisierten Zustände bei. Das Hinzufügen von Funktionen wie „go“ und „stop“ ist einfach, da wir sie mit „prototype“ deklariert haben.

Eine alternative Methode zur Erweiterung von Funktionen im Prototype lautet wie folgt:

var TeslaModelS = function() {
    this.numWheels    = 4;
    this.manufacturer = 'Tesla';
    this.make         = 'Model S';
}

TeslaModelS.prototype = {
    go: function() {
    // Räder drehen
    },
    stop: function() {
    // Bremsbeläge anwenden
    }
}

Das Revealing Prototype Pattern

Ähnlich dem Modulmuster gibt es auch eine Variante des Prototype-Musters, das als „Revealing Prototype Pattern“ bezeichnet wird. Diese Variante ermöglicht die Kapselung von öffentlichen und privaten Mitgliedern, da sie ein Objektliteral zurückgibt.

Durch die Rückgabe eines Objekts wird der Prototypen-Objektname mit einer Funktion versehen. So können wir steuern, was im aktuellen Prototypen freigegeben werden soll, um den Zugriff zu regeln:

var TeslaModelS = function() {
    this.numWheels    = 4;
    this.manufacturer = 'Tesla';
    this.make         = 'Model S';
}

TeslaModelS.prototype = function() {

    var go = function() {
    // Räder drehen
    };

    var stop = function() {
    // Bremsbeläge anwenden
    };

    return {
    pressBrakePedal: stop,
    pressGasPedal: go
    }

}();


Achten Sie darauf, dass die Funktionen „stop“ und „go“ vor dem zurückgegebenen Objekt geschützt sind, da sie außerhalb des Bereichs des zurückgegebenen Objekts liegen. Da JavaScript die prototypische Vererbung nativ unterstützt, müssen keine grundlegenden Funktionen neu geschrieben werden.

Der Prototype Design Pattern ist ein leistungsstarkes Konzept, das die effiziente Erstellung von Objekten in JavaScript ermöglicht und die Wiederverwendung von Objekten in komplexen Anwendungen erleichtert.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Java-Array: So prüfst du Werte effizient

JavaScript
Wie prüft man, ob ein Java Array einen Wert enthält? Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält. Einfache Iteration mit einer for-Schleife…