ES6 getter 및 setter는 Java의 유사한 개념과 실질적으로 다른 동기를 갖습니다.
Java에서 getter 및 setter는 클래스가 JavaBean을 정의 할 수 있도록합니다. getter와 setter의 요점은 bean이 public 필드에서 암시하는 것과 완전히 직교하는 "인터페이스"를 가질 수 있다는 것입니다. 그래서 JavaBean 속성이 아닌 "name"필드를 가질 수 있고 필드가 아닌 JavaBean 속성 "address"를 가질 수 있습니다.
JavaBean 속성은 Java 리플렉션을 통해 수천 개의 프레임 워크 (예 : Hibernate)에서 "검색 가능"합니다. 따라서 getter 및 setter는 빈 속성을 "노출"하는 표준 방법의 일부입니다.
함수 인 게터와 세터도 구현을 "추상화"하는 값을가집니다. 필드 또는 계산 된 ( "합성") 값일 수 있습니다. 따라서 "zipcode"라는 빈 속성이 있으면 저장된 문자열로 시작됩니다. 이제 주소 / 도시 / 주에서 계산 된 값으로 변경하고 싶다고 가정 해 보겠습니다.
필드를 사용하면이 코드가 중단됩니다.
String zipcode = address.zipcode();
그러나 게터를 사용하면 이것은 깨지지 않습니다.
String zipcode = address.getZipcode();
JavaScript에는 JavaBeans와 같은 것이 없습니다. 내가 읽은 한, GET 및 SET의 의도 된 값은 "합성"(계산 된) 속성으로 제한됩니다.
그러나 Java는 "필드"를 메소드로 호환성있게 변환 할 수 없지만 ES6 GET 및 SET는이를 허용한다는 점에서 Java보다 다소 낫습니다.
즉, 다음이있는 경우 :
var zipcode = address.zipcode;
zipcode를 표준 객체 속성에서 getter로 변경하면 위 코드는 이제 GET 함수를 호출합니다.
정의에 GET을 포함하지 않으면 zipcode GET 메서드가 호출되지 않습니다. 대신 var에 zipcode 함수를 할당 할뿐입니다.
따라서 Java 및 JavaScript ES6 getter 및 setter를 이해하는 데 중요한 차이점이 있다고 생각합니다.