Menu
Coddy logo textTech

Las palabras clave get y set

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

Los getters y setters son métodos especiales que parecen propiedades pero que en realidad son funciones. Te dan control sobre cómo se accede a las propiedades y cómo se modifican.

Vamos a crear una clase Person sencilla:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  // Getter para fullName
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
  
  // Setter para fullName
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Ahora podemos usar estos getters y setters como propiedades:

// Crear un nuevo Person
const person = new Person('John', 'Doe');

// Usar el getter
console.log(person.fullName); // Salida: John Doe

// Usar el setter
person.fullName = 'Jane Smith';

// El setter ha actualizado las propiedades internas
console.log(person.fullName); // Salida: Jane Smith

Observa que no llamamos a estos métodos con paréntesis. Se comportan igual que las propiedades, pero ejecutan código cuando se accede a ellas o se modifican.

challenge icon

Desafío

Se te da una clase User con una propiedad age. Tu tarea es añadir un getter y un setter para age que:

  1. Getter <strong>get age()</strong>: devuelve la edad almacenada
  2. Setter <strong>set age(newAge)</strong>: valida que la edad esté entre 0 y 120
    • Si es válida (0-120): almacénala en this._age
    • Si no es válida: no la cambies y registra "Invalid age!"

Hoja de referencia

Los getters y setters son métodos especiales que parecen propiedades pero ejecutan código cuando se accede a ellos o se modifican.

Getter - utiliza la palabra clave get para definir un método que devuelve un valor:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
}

Setter - utiliza la palabra clave set para definir un método que acepta un valor:

class Person {
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

Uso - accede a los getters y setters como si fueran propiedades (sin paréntesis):

const person = new Person('John', 'Doe');

// Using getter
console.log(person.fullName); // John Doe

// Using setter
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smith

Pruébalo tú mismo

import { User } from './user.js';

// Código de prueba - no modificar
const user = new User("Alice", 25);
console.log(user.age);      // Debería mostrar 25

user.age = 30;
console.log(user.age);      // Debería mostrar 30

user.age = 150;             // Debería mostrar "Invalid age!"
console.log(user.age);      // Debería seguir mostrando 30 (sin cambios)

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