En los ejemplos que hemos visto de orientación a objetos con Javascript: Crear un objeto en Javscript y Crear un objeto con métodos en Javascript. Hemos podido comprobar que los atributos de la clase, eran variables públicas. Es decir, podían ser accedidas desde el código Javascript de manera directa.
Si queremos que no se tenga acceso directo, si no que sea mediante método, deberemos de hacer que los atributos sean privados. Veamos como hacerlo.
Los atributos público serían definidos de la siguiente forma:
function rectangulo(base,altura){
this.base = base;
this.altura = altura;
}
Y pueden ser accedidos de la siguiente forma:
var r1 = new rectangulo(2,6);
alert(r1.base);
Para declararlos privados, dejamos de utilizar la clausula this y pasamos a definirlos como variables. Jugando, en este caso, con el ámbito de uso de las variables en Javascript.
Las definiríamos de la siguiente forma:
function rectangulo(base,altura){
var base = base;
var altura = altura;
}
De esta forma, el código de acceso directo…
var r1 = new rectangulo(2,6);
alert(r1.base);
… devolvería undefined.
En este caso tendríamos que proporcionar unos métodos públicos para acceder a estos atributos privados.
function rectangulo(base,altura){
var base = base;
var altura = altura;
this.getBase = function() {return base;}
this.getAltura = function() {return altura;}
}
Y el acceso mediante estos métodos:
document.write("Un rectangulo de " + r1.getBase() + "x" + r1.getAltura());