akcesory właściwości javascript

W JavaScript wygląda na to, że używanie akcesorów do właściwości nie jest aż tak powszechne (w przeciwieństwie do innych języków OO, takich jak na przykład Java).

Jeśli mamPerson obiekt o nazwie zdefiniowanej jako

function Person(name) {
   this.name = name;
}

Imię osoby nie zmieni się, ale chcę mieć do niej dostęp w razie potrzeby, więc mógłbym zrobić coś takiego:

function Person(name) {
   var name = name;
   this.getName = function() {
      return name;
   }
}

Nawet w dynamicznym języku myślę, że zasady używania getterów i setterów mają taki sam sposób, jak w przypadku statycznie wpisanych języków OO (np. Enkapsulacja, dodawanie sprawdzania poprawności, ograniczanie dostępu itp.)

To pytanie może zostać zamknięte jako subiektywne, ale jestem ciekaw, dlaczego to zachowanie nie pojawia się częściej (np. Programiści Java zwariowaliby, gdyby wszystko było publiczne).

Czy istnieje „standardowy” sposób na wykonanie tego w javascript? widziałemObject.defineProperty, ale nie wszystkie przeglądarki to obsługują.

questionAnswers(5)

yourAnswerToTheQuestion