Propiedades computadas
Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy — lección 44 de 56.
Las propiedades computadas son getters que calculan y devuelven un valor en lugar de simplemente devolver datos almacenados. Se ven como propiedades regulares pero calculan su valor sobre la marcha.
Echemos un vistazo al ejemplo. Tenemos un objeto con una propiedad regular:
const circle = {
radius: 5
};Ahora añadimos una propiedad computada usando un getter:
const circle = {
radius: 5,
get diameter() {
return this.radius * 2;
}
};Así es como accedemos a la propiedad computada:
console.log(circle.diameter); // Resultado: 10Si actualizamos el radio, el diámetro también se actualiza automáticamente:
circle.radius = 10;
console.log(circle.diameter); // Salida: 20Las propiedades computadas son útiles cuando el valor de una propiedad depende de otras propiedades o requiere un cálculo.
Desafío
Se te proporciona una clase Rectangle con las propiedades width y height. Tu tarea es añadir propiedades computadas para area y perimeter.
- Propiedad computada
<strong>area</strong>- devuelve width × height - Propiedad computada
<strong>perimeter</strong>- devuelve 2 × (width + height)
Hoja de referencia
Las propiedades computadas son getters que calculan y devuelven un valor en lugar de simplemente devolver datos almacenados. Calculan su valor sobre la marcha.
Define una propiedad computada utilizando la palabra clave get:
const circle = {
radius: 5,
get diameter() {
return this.radius * 2;
}
};Accede a las propiedades computadas como propiedades normales (sin paréntesis):
console.log(circle.diameter); // Salida: 10Las propiedades computadas se actualizan automáticamente cuando cambian sus propiedades dependientes:
circle.radius = 10;
console.log(circle.diameter); // Salida: 20Pruébalo tú mismo
import { Rectangle } from './rectangle.js';
// Código de prueba - no modificar
const rect = new Rectangle(5, 10);
console.log(`Area: ${rect.area}`); // Debería mostrar "Area: 50"
console.log(`Perimeter: ${rect.perimeter}`); // Debería mostrar "Perimeter: 30"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 repaso12Getters y Setters
Las palabras clave get y setPropiedades computadasValidación y efectos secundariosDesafío de repaso