Bộ chuyển và bộ định tuyến ES6 có động cơ khác biệt đáng kể so với các khái niệm tương tự trong Java.
Trong Java, getters và setters cho phép một lớp định nghĩa một JavaBean. Điểm của getters và setters là nó cho phép bean có một "giao diện" hoàn toàn trực giao từ những trường công khai ngụ ý. Vì vậy, tôi có thể có một trường "tên" KHÔNG phải là thuộc tính JavaBean và tôi có thể có "địa chỉ" thuộc tính JavaBean KHÔNG phải là một trường.
Các thuộc tính của JavaBean cũng có thể được "khám phá" bởi hàng nghìn khuôn khổ (ví dụ: Hibernate) thông qua phản xạ Java. Do đó, getters và setters là một phần của phương pháp tiêu chuẩn để "phơi bày" các thuộc tính bean.
Getters và setters, là các hàm, cũng có giá trị mà chúng "trừu tượng hóa" việc triển khai. Nó có thể là một trường hoặc một giá trị được tính toán ("tổng hợp"). Vì vậy, nếu tôi có một thuộc tính bean được gọi là "mã zip", nó bắt đầu dưới dạng chuỗi được lưu trữ. Bây giờ, giả sử tôi muốn thay đổi nó thành một giá trị được tính từ địa chỉ / thành phố / tiểu bang?
Nếu tôi sử dụng một trường, mã này bị hỏng:
String zipcode = address.zipcode();
Nhưng nếu tôi sử dụng getter, điều này không bị hỏng:
String zipcode = address.getZipcode();
JavaScript không có bất cứ thứ gì giống như JavaBeans. Cho đến nay như tôi đã đọc, giá trị dự định của GET và SET được giới hạn trong các thuộc tính "tổng hợp" (tính toán) nói trên.
Nhưng nó tốt hơn java ở chỗ trong khi Java không cho phép bạn chuyển đổi tương thích một "trường" thành một phương thức, thì ES6 GET và SET cho phép điều đó.
Đó là, nếu tôi có:
var zipcode = address.zipcode;
Nếu tôi thay đổi mã zip từ một thuộc tính đối tượng tiêu chuẩn thành một getter, thì đoạn mã trên bây giờ sẽ gọi hàm GET.
Lưu ý rằng nếu tôi không bao gồm GET trong định nghĩa, điều này sẽ KHÔNG gọi phương thức zipcode GET. Thay vào đó, nó sẽ chỉ gán mã zip của hàm cho var.
Vì vậy, tôi nghĩ đây là một số điểm khác biệt quan trọng để hiểu rõ hơn về bộ cài đặt và cài đặt Java và JavaScript ES6.