Menu
Coddy logo textTech

Métodos privados

Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy — lección 19 de 56.

Los métodos privados en las clases de JavaScript te permiten ocultar detalles de implementación y evitar el acceso externo a la funcionalidad interna.

A partir de ES2022, los métodos privados se pueden definir utilizando el prefijo #:

class Counter {
  #count = 0;
  
  // Crear un método privado
  #increment() {
    this.#count++;
  }
  
  // Método público que utiliza el método privado
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Creemos una instancia de Counter:

const myCounter = new Counter();

Podemos llamar al método público:

console.log(myCounter.addOne()); // Salida: 1

Pero intentar acceder al método privado directamente causará un error:

myCounter.#increment(); // Error: El método privado no es accesible fuera de la clase

Los métodos privados ayudan a mantener el encapsulamiento al mantener ocultos los detalles de implementación interna del mundo exterior.

challenge icon

Desafío

Se te proporciona una clase MessageBox que almacena mensajes. Tu tarea es añadir un método privado llamado #isValidMessage(text) que valide los mensajes. Debe:

  • Devolver true si el texto no está vacío y tiene menos de 100 caracteres
  • Devolver false en caso contrario

Hoja de referencia

Los métodos privados en las clases de JavaScript se definen utilizando el prefijo # y solo se puede acceder a ellos desde dentro de la clase:

class Counter {
  #count = 0;
  
  // Método privado
  #increment() {
    this.#count++;
  }
  
  // Método público que utiliza el método privado
  addOne() {
    this.#increment();
    return this.#count;
  }
}

No se puede acceder a los métodos privados desde fuera de la clase:

const myCounter = new Counter();
myCounter.addOne(); // Funciona
myCounter.#increment(); // Error: El método privado no es accesible

Los métodos privados ayudan a mantener el encapsulamiento al ocultar los detalles de implementación interna.

Pruébalo tú mismo

import { MessageBox } from './messageBox.js';

// Usando el cuadro de mensaje
const box = new MessageBox();

console.log(box.setMessage("Hello"));    // "Message set!" (usa #isValidMessage)
console.log(box.setMessage(""));         // "Invalid message!" (usa #isValidMessage)
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