notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

445 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

¿Qué tan felices somos los profesionales que desarrollamos software en México?

Lo lees en 1 Min.

Hola a todos estoy realizando un estudio para saber el nivel de satisfacción laboral de los desa...

 

¿Qué es la Programación Funcional?

Lo lees en 3 Min.

La programación funcional nos es más que un paradigma de programación, es decir, es una forma en ...

 

Cómo detectar caras usando PHP

Lo lees en 2 Min.

Me crucé con una pregunta muy interesante en un foro de PHP: ¿Cómo detectar caras en imágenes? ...

 

El Resumen de la semana (1-7 de octubre)

Lo lees en 3 Min.

Introducción Bienvenidos al Resumen de la semana (1-7 octubre). Aquí tienes la últimas novedades...

 

Comunidad