notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

572 veces ha sido leído este artículo

Privacidad de atributos en Javascript

Lo lees en 1 Min.

Cómo es sabido una de las caracteristicas principales de cualquier lenguaje de programación orientada a objetos es la posibilidad de agregarle privacidad a algunos atributos previamente identificados, este principio tiene el nombre de encapsulamiento.

Esto nos ayuda para controlar el comportamiento de un objeto, denegando que otros puedan acceder o cambiar valores a sus atributos o usar sus métodos que no deberían de ser usados. Un ejemplo simple sería algo así:

Supongamos que tenemos una clase Automovil que tiene un atributo propietario que es un objeto de la clase Persona, si los atributos de la clase Persona no estuvieran protegidos , la Clase Automovil podría cambiar el nombre de una manera poco ortodoxa , en Java sería algo así "propietario.nombre = "Maria" " algo que no es recomendado y que es un error a la hora de programar Orientado a objetos, para eso tenemos que establecer como privado los atributos de Persona y crear métodos "Set" y "Gets" para los valores que queramos acceder en otra parte del programa "propietario.setNombre("Maria")".

Ahora el problema en Javascript es que no existe la forma de hacer los atributos privados (recordemos en Javascript no existen clases como tal ya que es orientado a objetos basado en prototipos). Supongamos que queremos hacer el mismo ejemplo (sin utilizar class de ecmascript 6) sería algo cómo:

let Persona = function(){
  let nombre = ''";
  let edad = ""
}

Aquí no hay una forma "sencilla" de hacer nombre y edad privados como por ejemplo en Java. Tendremós que solucionar esto de una manera un poco creativa. Una de las maneras de agregarle privacidad a los atributos de un Objeto en javascript sería la siguiente:

var Persona = function() {
  var nombre = ''";
  var edad = ''";
  return {
     setNombre: function(nom){
       nombre = nom;
    },
    getNombre: function() {
      return nombre;
    }
  }
}

Aquí aprovechamos el scope de función que tiene Javascript para hacer las variables privadas y tener acceso al valor de estas mediante los métodos get que creemos .

var Automovil = function(){
  var marca = ''";
  var propietario = new Persona();
  return {
    setMarca: function(marc){
      this.marca = marc;
    },
    getMarca: function() {
      return this.marca;
    },
    getPropietario: function(){
      return this.propietario;
    }
  }
}

var ford = new Automovil();

ford.getPropietario()   .setNombre('Maria');

console.log(ford.getPropietario().getNombre());

Y aquí completamos el ejemplo.

Recomendaciones

React Hooks

Lo lees en 4 Min.

Hace unos días, durante la ReactConf, Sophie Alpert quien maneja el equipo de desarrollo de React...

 

Integración continua

Lo lees en 4 Min.

¿Qué es integración continua? Integración continua es un tema el cual se ha vuelto muy popular e...

 

Resumen de la Semana (Octubre 8-14)

Lo lees en 5 Min.

Introducción Hola Codiers. Esta semana estamos cargados de noticias de tecnología, desde lanzami...

 

Redux - No sabes que lo necesitas hasta que lo usas

Lo lees en 6 Min.

Redux es una de esas tecnologías enigmáticas, todo el mundo habla de ella, la usa, pero quienes a...

 

Comunidad