Clase con atributos privados en Javascript

18/Sep/2010 JavaScript 3 Comentarios

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:

  1. function rectangulo(base,altura){
  2. this.base = base;
  3. this.altura = altura;
  4. }

Y pueden ser accedidos de la siguiente forma:

  1. var r1 = new rectangulo(2,6);
  2. 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:

  1. function rectangulo(base,altura){
  2. var base = base;
  3. var altura = altura;
  4. }

De esta forma, el código de acceso directo...

  1. var r1 = new rectangulo(2,6);
  2. alert(r1.base);

... devolvería undefined.

En este caso tendríamos que proporcionar unos métodos públicos para acceder a estos atributos privados.

  1. function rectangulo(base,altura){
  2. var base = base;
  3. var altura = altura;
  4. this.getBase = function() {return base;}
  5. this.getAltura = function() {return altura;}
  6. }

Y el acceso mediante estos métodos:

  1. document.write("Un rectangulo de " + r1.getBase() + "x" + r1.getAltura());

Vídeos sobre Javascript


3 comentarios en “Clase con atributos privados en Javascript”

Víctor Cuervo

pepito

Eso no funciona. Create un variable temporal en en la clase ese caso, y cuando se termine de ejecutar el “constructor” de la clase, esas variable desaparecen.

Víctor Cuervo

Víctor Cuervo

Pon el código que has utilizado para poder evaluarlo.
Saludos.

Víctor Cuervo

Garusis

Javascript me sigue impresionando cada dia demostrando que es un lenguaje bastante fexible… es bueno

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*