accesores de propiedad javascript

En Javascript, parece que el uso de accesores de propiedades no es tan común (a diferencia de otros lenguajes OO como Java, por ejemplo).

Si tengo unPerson objeto con un nombre, definido como

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

El nombre de una persona no va a cambiar, pero quiero poder acceder a él cuando sea necesario, por lo que podría hacer algo como:

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

Incluso en un lenguaje dinámico, creo que los principios del uso de captadores y definidores se aplican de la misma manera que a los idiomas OO tipificados estáticamente (por ejemplo, encapsulación, adición de validación, restricción de acceso, etc.)

Esta pregunta puede cerrarse como algo subjetivo, pero tengo curiosidad por saber por qué este comportamiento no aparece con mayor frecuencia (por ejemplo, los desarrolladores de Java se volverían locos si todo fuera público).

¿Hay una forma "estándar" de hacer esto en javascript? He vistoObject.defineProperty, pero no todos los navegadores soportan eso.

Respuestas a la pregunta(5)

Su respuesta a la pregunta