ES6-Getter und -Setter haben eine wesentlich andere Motivation als ähnliche Konzepte in Java.
In Java ermöglichen Getter und Setter einer Klasse, eine JavaBean zu definieren. Der Punkt von Gettern und Setzern ist, dass die Bean eine vollständig orthogonale "Schnittstelle" von der durch öffentliche Felder implizierten haben kann. Ich kann also ein Feld "name" haben, das KEINE JavaBean-Eigenschaft ist, und ich kann eine JavaBean-Eigenschaft "address" haben, die KEIN Feld ist.
JavaBean-Eigenschaften können auch von Tausenden von Frameworks (z. B. Hibernate) über Java Reflection "entdeckt" werden. Daher sind Getter und Setter Teil einer Standardmethode zum "Freilegen" von Bohneneigenschaften.
Getter und Setter haben als Funktionen auch den Wert, dass sie die Implementierung "abstrahieren". Es kann entweder ein Feld oder ein berechneter ("synthetischer") Wert sein. Wenn ich also eine Bean-Eigenschaft namens "Postleitzahl" habe, beginnt diese als gespeicherte Zeichenfolge. Angenommen, ich möchte es in einen Wert ändern, der aus Adresse / Stadt / Bundesland berechnet wird.
Wenn ich ein Feld verwende, wird dieser Code unterbrochen:
String zipcode = address.zipcode();
Aber wenn ich einen Getter benutze, bricht das nicht:
String zipcode = address.getZipcode();
JavaScript hat nichts wie JavaBeans. Soweit ich gelesen habe, ist der beabsichtigte Wert von GET und SET auf die oben genannten "synthetischen" (berechneten) Eigenschaften beschränkt.
Aber es ist etwas besser als Java, da Java es Ihnen nicht erlaubt, ein "Feld" kompatibel in eine Methode zu konvertieren, ES6 GET und SET dies jedoch zulassen.
Das heißt, wenn ich habe:
var zipcode = address.zipcode;
Wenn ich die Postleitzahl von einer Standardobjekteigenschaft in einen Getter ändere, ruft der obige Code jetzt die GET-Funktion auf.
Beachten Sie, dass wenn ich GET nicht in die Definition aufgenommen hätte, dies NICHT die Postleitzahl-GET-Methode aufrufen würde. Stattdessen würde es lediglich die Postleitzahl der Funktion der var zuweisen.
Daher denke ich, dass dies einige wichtige Unterscheidungen sind, um zwischen Java- und JavaScript ES6-Get- und -Setzern zu verstehen.