Los captadores y definidores de ES6 tienen una motivación sustancialmente diferente a conceptos similares en Java.
En Java, los getters y setters permiten que una clase defina un JavaBean. El punto de los getters y setters es que permite que el bean tenga una "interfaz" completamente ortogonal de la que implican los campos públicos. Entonces puedo tener un "nombre" de campo que NO sea una propiedad de JavaBean, y puedo tener una "dirección" de propiedad de JavaBean que NO sea un campo.
Las propiedades de JavaBean también son "detectables" por miles de marcos (Hibernate, por ejemplo) a través de la reflexión de Java. Por tanto, los captadores y definidores son parte de un método estándar para "exponer" las propiedades de los frijoles.
Los getters y setters, al ser funciones, también tienen el valor de "abstraer" la implementación. Puede ser O un campo o un valor calculado ("sintético"). Entonces, si tengo una propiedad de frijol llamada "código postal", comienza como una cadena almacenada. Ahora suponga que quiero cambiarlo para que sea un valor calculado a partir de la dirección / ciudad / estado.
Si uso un campo, este código se rompe:
String zipcode = address.zipcode();
Pero si uso un captador, esto no se rompe:
String zipcode = address.getZipcode();
JavaScript no tiene nada parecido a JavaBeans. Hasta donde he leído, el valor previsto de GET y SET se limita a las propiedades "sintéticas" (calculadas) mencionadas anteriormente.
Pero es algo mejor que Java en el sentido de que, si bien Java no le permite convertir de manera compatible un "campo" en un método, ES6 GET y SET lo permite.
Es decir, si tengo:
var zipcode = address.zipcode;
Si cambio el código postal de ser una propiedad de objeto estándar a un captador, el código anterior ahora llama a la función GET.
Tenga en cuenta que si no incluyo GET en la definición, esto NO invocaría el método GET del código postal. En cambio, simplemente asignaría el código postal de la función a var.
Así que creo que estas son algunas distinciones importantes para entender entre los getters y setters de Java y JavaScript ES6.