Getters và setters ES6 có động lự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 lớp xác định JavaBean. Điểm của getters và setters là nó cho phép bean có một giao diện "trực giao" hoàn toàn từ đó được ngụ ý bởi các trường công khai. Vì vậy, tôi có thể có một "tên" trường không phải là một thuộc tính JavaBean, và tôi có thể có một "địa chỉ" thuộc tính JavaBean không phải là một trường.
Thuộc tính JavaBean cũng "có thể phát hiện" bởi hàng nghìn khung công tác (ví dụ như Hibernate) thông qua phản chiếu Java. Do đó, getters và setters là một phần của một phương thức 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" 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à "zipcode", bắt đầu như 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 phá vỡ:
String zipcode = address.zipcode();
Nhưng nếu tôi sử dụng một getter, điều này không phá vỡ:
String zipcode = address.getZipcode();
JavaScript không có bất cứ điều gì như JavaBeans. Cho đến khi 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ó có phần tốt hơn so với java trong khi Java không cho phép bạn chuyển đổi tương đồng một "trường" thành một phương thức, 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ã bưu điện từ là một tài sản đối tượng chuẩn để một getter, các mã trên tại 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 GET zipcode. Thay vào đó, nó sẽ chỉ gán mã zip chức năng cho var.
Vì vậy, tôi nghĩ rằng đây là một số khác biệt quan trọng để hiểu betweeen Java và JavaScript ES6 getters và setters.
Nó tương tự như trong C#, nếu bạn tình cờ biết về nó. –
Liên quan: [Đối số sử dụng ES6 getters và setters qua quy ước getProperty/setProperty là gì?] (Http://stackoverflow.com/q/32114468/1048572) – Bergi
Bài viết giải thích tốt về điều này có thể tìm thấy tại: https://coryrylan.com/blog/javascript-es6-class-syntax "Trong lớp của chúng tôi ở trên, chúng tôi có một getter và setter cho thuộc tính tên của chúng tôi. Chúng tôi sử dụng quy ước '_' để tạo trường sao lưu để lưu trữ thuộc tính tên của chúng tôi. điều này mỗi khi có được hoặc thiết lập được gọi là nó sẽ gây ra tràn ngăn xếp "... Nó cũng nói về biến không thực sự là" riêng tư ", nhưng có rất nhiều cách mới để tạo các vars riêng trong các lớp JS; yêu thích của tôi là chỉ sử dụng Typecript, nhưng tôi đã sử dụng cách tiếp cận Symbol quá – webdevinci