Campos de clase públicos y privados
Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy — lección 18 de 56.
En las clases de JavaScript, podemos definir dos tipos de campos de clase: públicos y privados.
Los campos públicos son accesibles desde fuera de la clase y pueden ser utilizados por cualquier persona.
Crea una clase con campos públicos:
class Student {
name = '';
grade = 0;
constructor(name, grade) {
this.name = name;
this.grade = grade;
}
}Crea una instancia de estudiante:
const student = new Student('Alice', 95);Accede a campos públicos desde fuera de la clase:
console.log(student.name); // Output: "Alice"
student.grade = 98;
console.log(student.grade); // Output: 98Los campos privados se denotan con el símbolo # y solo se puede acceder a ellos desde dentro de la clase:
class Student {
name = '';
#grade = 0;
constructor(name, grade) {
this.name = name;
this.#grade = grade;
}
getGrade() {
return this.#grade;
}
updateGrade(newGrade) {
this.#grade = newGrade;
}
}Uso de campos privados:
const student = new Student('Bob', 87);
console.log(student.name); // Salida: "Bob"
// Acceder al campo privado usando un método
console.log(student.getGrade()); // Salida: 87
// Actualizar el campo privado usando un método
student.updateGrade(92);
console.log(student.getGrade()); // Salida: 92
// Esto causaría un error:
// console.log(student.#grade); // SyntaxErrorDesafío
- Agrega dos campos a la clase llamada UserAccount:
- Un campo público
username - Un campo privado
#password
- Un campo público
- Agrega un constructor que reciba los parámetros
usernameypassword
Hoja de referencia
Las clases de JavaScript admiten campos públicos y privados.
Los campos públicos son accesibles desde fuera de la clase:
class Student {
name = '';
grade = 0;
constructor(name, grade) {
this.name = name;
this.grade = grade;
}
}
const student = new Student('Alice', 95);
console.log(student.name); // Resultado: "Alice"
student.grade = 98;Los campos privados utilizan el símbolo # y solo se puede acceder a ellos dentro de la clase:
class Student {
name = '';
#grade = 0;
constructor(name, grade) {
this.name = name;
this.#grade = grade;
}
getGrade() {
return this.#grade;
}
updateGrade(newGrade) {
this.#grade = newGrade;
}
}
const student = new Student('Bob', 87);
console.log(student.getGrade()); // Resultado: 87
student.updateGrade(92);
// student.#grade causaría un SyntaxErrorPruébalo tú mismo
import { UserAccount } from './userAccount.js';
// Código de prueba - no modificar
const user = new UserAccount("alice", "secret123");
console.log(user.username); // Debería mostrar "alice"
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
1Objetos y la palabra clave this
Repaso rápido: ObjetosAgregar métodos a los objetosEntendiendo la palabra clave thisFunciones constructorasLa palabra clave newDesafío de repaso7Herencia y la palabra clave extends
HerenciaLa relación "es-un"La palabra clave extendsEl método super()Heredar propiedades y métodosDesafío de repaso13Composición vs. Herencia
La relación "tiene-un" vs. "es-un"Los límites de la herencia profundaConstrucción de objetos2Organización del código
¿Qué son los módulos?Exportar con exportImportar con importExportaciones por defecto vs. nombradas5Encapsulamiento y Acceso
EncapsulamientoCampos de clase públicos y privadosMétodos privadosDesafío de repaso8Organización del código OOP
Organizar clases en módulos11Proyecto: Un renderizador de figuras
Configuración: Clase Figura y exportaciónHerencia de la clase Círculo14Sistema de Gestión de Biblioteca
Diseño de la BibliotecaClase Libro con Composición9Métodos y propiedades estáticos
Nivel de clase vs. Nivel de instanciaPropiedades estáticasMétodos de utilidad estáticosDesafío de repaso