ES6のゲッターとセッターは、Javaの同様の概念とは実質的に異なる動機を持っています。
Javaでは、ゲッターとセッターを使用してクラスでJavaBeanを定義できます。ゲッターとセッターのポイントは、それにより、Beanが、パブリックフィールドによって暗示されるものから完全に直交する「インターフェース」を持つことができるようになることです。したがって、JavaBeanプロパティではないフィールド「name」を使用でき、フィールドではないJavaBeanプロパティ「address」を使用できます。
JavaBeanプロパティは、Javaリフレクションを介して数千のフレームワーク(Hibernateなど)によって「検出可能」です。したがって、ゲッターとセッターは、Beanプロパティを「公開」するための標準メソッドの一部です。
関数であるゲッターとセッターにも、実装を「抽象化」するという価値があります。フィールドまたは計算された(「合成」)値のどちらでもかまいません。したがって、「zipcode」というBeanプロパティがある場合、それは保存された文字列として始まります。ここで、住所/都市/州から計算された値に変更したいとしますか?
フィールドを使用すると、このコードは壊れます。
String zipcode = address.zipcode();
しかし、ゲッターを使用しても、これは壊れません:
String zipcode = address.getZipcode();
JavaScriptにはJavaBeansのようなものはありません。私が読んだ限りでは、GETおよびSETの意図された値は、前述の「合成」(計算された)プロパティに制限されています。
ただし、Javaでは「フィールド」をメソッドに互換的に変換することはできませんが、ES6のGETおよびSETでは可能です。
つまり、私が持っている場合:
var zipcode = address.zipcode;
郵便番号を標準のオブジェクトプロパティからゲッターに変更すると、上記のコードでGET関数が呼び出されます。
定義にGETを含めなかった場合、郵便番号のGETメソッドが呼び出されないことに注意してください。代わりに、関数zipcodeを変数に割り当てるだけです。
したがって、これらはJavaとJavaScript ES6のゲッターとセッターの間で理解するためのいくつかの重要な違いだと思います。