Es gibt zwei Dinge, über die ich sehr verwirrt bin.
Was ist der Vorteil der Verwendung von ES6 Klassen- oder Objektliteralen?
Und wo soll ich welche verwenden?
Einige der Beispiele, die ich ausprobiere, sind unten aufgeführt. Bitte lassen Sie mich wissen, wann Sie bestimmte Art der Implementierung verwenden und wann nicht.
Klasse Beispiel 1:
%Vor%Klasse Beispiel 2:
%Vor%Objektwörtliches Beispiel:
%Vor%Was ich davon denke, über sie zu lesen, ist folgendes:
Klasse Beispiel 1:
Sie können nicht mehr als 1 Objekt erstellen. Weil ein Modul nur einmal ausgeführt wird. So erhalten Sie bei jedem Import das gleiche Objekt. Etwas ähnlich wie Singleton. (Korrigiere mich hier, wenn ich es falsch verstanden habe)
Sie können nicht auf die statischen Methoden der Klasse zugreifen, da Sie nur das Objekt der Klasse exportieren.
Klasse Beispiel 2:
Objektwörtliches Beispiel:
Sie können keine Vererbung durchführen.
Das gleiche Objekt wird bei jedem Request übergeben. (Korrigiere mich, wenn ich mich auch hier irre)
Bitte helfen Sie mir, diese Konzepte zu verstehen, was ich verpasse, was ich falsch verstanden habe und was wann und wo verwendet werden sollte. Ich werde sehr dankbar für Ihre Hilfe sein.
Fühlen Sie sich frei, die Frage zu bearbeiten, wenn Sie denken, dass ich irgendwo einen Fehler gemacht habe.
Klasse Beispiel 1: Sie können nicht mehr als 1 Objekt erstellen. Weil ein Modul nur einmal ausgeführt wird. So erhalten Sie bei jedem Import das gleiche Objekt. Etwas ähnlich wie Singleton.
Richtig. Dies ist ein Antipattern daher. Benutze es nicht. class
Syntax ist kein Ersatz für Objektliterale.
Sie können nicht auf die statischen Methoden der Klasse zugreifen, da Sie nur das Objekt der Klasse exportieren.
Theoretisch kannst du auth.constructor.…
machen, aber das ist nicht gut.
Klasse Beispiel 2: Wenn Sie eine Klasse haben, die nur Hilfsmethoden enthält und das Objekt keinen Zustand hat, macht es keinen Sinn, das Objekt dieser Klasse ständig zu erzeugen. Im Fall von Hilfsklassen sollte dies nicht verwendet werden.
Richtig. Verwenden Sie stattdessen ein einfaches Objektliteral oder noch besser: mehrere benannte Exporte anstelle von "Dienstprogrammobjekten".
Object Literal Beispiel: Sie können keine Vererbung durchführen.
Sie können weiterhin Object.create
verwenden, um Vererbung oder parasitäre Vererbung oder wirklich irgendetwas zu tun.
Das gleiche Objekt wird bei jedem Request übergeben.
Richtig, aber das ist kein Nachteil. Wenn Ihr Objekt einen Status enthält, sollten Sie stattdessen class
verwendet haben.
Wenn Ihre Klasse einen Konstruktor hat, können Sie mehrere Objekte dieser Klasse erstellen:
%Vor%Natürlich wird Ihr Panier in der Datei Panier.js im selben Verzeichnis definiert:
%Vor%Tags und Links javascript node.js express ecmascript-6