Les getters et setters ES6 ont une motivation sensiblement différente de celle des concepts similaires en Java.
En Java, les getters et les setters permettent à une classe de définir un JavaBean. L'intérêt des getters et des setters est que cela permet au bean d'avoir une "interface" complètement orthogonale à partir de celle impliquée par les champs publics. Je peux donc avoir un champ "nom" qui n'est PAS une propriété JavaBean, et je peux avoir une propriété JavaBean "adresse" qui n'est PAS un champ.
Les propriétés JavaBean sont également "découvrables" par des milliers de frameworks (Hibernate par exemple) via la réflexion Java. Ainsi, les getters et les setters font partie d'une méthode standard pour «exposer» les propriétés des haricots.
Les getters et les setters, en tant que fonctions, ont également la valeur de «faire abstraction» de l'implémentation. Il peut s'agir SOIT d'un champ ou d'une valeur calculée ("synthétique"). Donc, si j'ai une propriété bean appelée "zipcode", cela commence par une chaîne stockée. Supposons maintenant que je veuille la changer pour qu'elle soit une valeur calculée à partir de l'adresse / ville / état?
Si j'utilise un champ, ce code casse:
String zipcode = address.zipcode();
Mais si j'utilise un getter, cela ne casse pas:
String zipcode = address.getZipcode();
JavaScript n'a rien de comparable aux JavaBeans. Autant que j'ai lu, la valeur prévue de GET et SET est limitée aux propriétés "synthétiques" (calculées) ci-dessus.
Mais c'est un peu mieux que java dans la mesure où si Java ne vous permet pas de convertir de manière compatible un "champ" en méthode, ES6 GET et SET le permettent.
Autrement dit, si j'ai:
var zipcode = address.zipcode;
Si je change le code postal d'une propriété d'objet standard en un getter, le code ci-dessus appelle maintenant la fonction GET.
Notez que si je n'incluais pas GET dans la définition, cela n'invoquerait PAS la méthode zipcode GET. Au lieu de cela, il affecterait simplement le code postal de la fonction au var.
Je pense donc que ce sont des distinctions importantes à comprendre entre les getters et les setters Java et JavaScript ES6.