В Javascript кажется, что использование средств доступа к свойствам не так уж распространено (в отличие от других языков OO, таких как, например, Java).
Если у меня есть объект Person
с именем, определенным как
function Person(name) {
this.name = name;
}
Имя человека не изменится, но я хочу иметь доступ к нему, когда это необходимо, поэтому я мог бы сделать что-то вроде:
function Person(name) {
var name = name;
this.getName = function() {
return name;
}
}
Я думаю, что даже в динамическом языке принципы использования геттеров и сеттеров применяются так же, как и в статически типизированных объектно-ориентированных языках (например, инкапсуляция, добавление проверки, ограничение доступа и т. д.).
Этот вопрос может быть закрыт как субъективный, но мне любопытно, почему такое поведение не появляется чаще (например, разработчики Java сошли бы с ума, если бы все было общедоступным).
Есть ли «стандартный» способ сделать это в javascript? Я видел Object.defineProperty
, но не все браузеры его поддерживают.