Trong Javascript, có vẻ như việc sử dụng các trình truy cập thuộc tính không phải là tất cả những gì phổ biến (không giống như các ngôn ngữ OO khác chẳng hạn như Java chẳng hạn).javascript property accessors
Nếu tôi có một đối tượng Person
với một cái tên, định nghĩa là
function Person(name) {
this.name = name;
}
tên của một người sẽ không thay đổi, nhưng tôi muốn để có thể truy cập vào nó khi cần thiết, vì vậy tôi có thể làm điều gì đó như:
function Person(name) {
var name = name;
this.getName = function() {
return name;
}
}
Ngay cả trong một ngôn ngữ năng động, tôi nghĩ rằng các nguyên tắc của việc sử dụng getter và setter áp dụng giống như cách họ làm để tĩnh gõ ngôn ngữ OO (ví dụ như đóng gói, thêm xác nhận, hạn chế truy cập, vv)
Câu hỏi này có thể bị đóng là chủ quan, nhưng tôi tò mò là tại sao hành vi này không xuất hiện thường xuyên hơn (ví dụ: Các nhà phát triển Java sẽ phát điên nếu mọi thứ đều được công khai).
Có cách nào "chuẩn" để thực hiện việc này trong javascript không? Tôi đã thấy Object.defineProperty
, nhưng không phải tất cả các trình duyệt đều hỗ trợ điều đó.
Tôi cho rằng nó có thể liên quan một phần đến mong muốn giảm tải băng thông. Đánh dấu bổ sung nghĩa là các bit phụ trên dây. Trong trường hợp của một ví dụ nhỏ như thế này, nó có thể không có vẻ liên quan, trong một ứng dụng mạnh mẽ bao trùm hàng chục nghìn dòng, nó có thể trở nên quan trọng. – Shmiddty
Định nghĩa bổ sung cũng có nghĩa là sử dụng bộ nhớ bổ sung trên máy khách, dọc theo các dòng giống như nhận xét trước của tôi. – Shmiddty
Tôi nghĩ rằng các câu trả lời đã được đưa ra cho thấy rằng đây không phải là một câu hỏi hay cho SO vì nó dễ bị câu trả lời dựa trên ý kiến. – madth3