Menu
Coddy logo textTech

Encapsulamiento

Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy. Lección 17 de 56.

La encapsulación es un proceso de combinar datos dentro de una clase en una sola unidad.

Esto ayuda a establecer restricciones para acceder directamente a los datos de la clase y, en última instancia, nos ayuda a evitar cualquier modificación accidental de los datos. 

Veamos la encapsulación en acción con un ejemplo sencillo. Crea un objeto básico con propiedades públicas:

const user = {
  name: "John",
  email: "john@example.com"
};

Cualquiera puede acceder directamente a estas propiedades y modificarlas:

user.name = "Jane"; // Fácil de modificar desde fuera
console.log(user.email); // Fácil de acceder desde fuera

Un enfoque más encapsulado utiliza cierres para ocultar datos:

function createUser(name, email) {
  // Estas variables son privadas (encapsuladas)
  let userName = name;
  let userEmail = email;
  
  // Devuelve un objeto con métodos para interactuar con los datos privados
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Ahora, para interactuar con los datos:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// No se puede acceder directamente a los datos
console.log(encapsulatedUser.userName); // undefined
challenge icon

Desafío

Se te proporciona código que utiliza la encapsulación para proteger los datos del usuario. Tu tarea es añadir un método getAge() para acceder a la edad.

Las pruebas comprobarán:

  • Existe el método getAge()
  • Devuelve la edad correcta
  • La información sobre la edad permanece privada

Salida esperada:

john_doe

25

Pruébalo tú mismo

import { createUser } from './createUser.js';

// Código de prueba - no modificar
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Debería mostrar "john_doe"
console.log(user.getAge());      // Debería mostrar 25

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de JavaScript online