Menu
CoddyTech

As Palavras-chave get e set

Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy. Lição 43 de 56.

Getters e setters são métodos especiais que parecem propriedades, mas na verdade são funções. Eles dão a você controle sobre como as propriedades são acessadas e modificadas.

Vamos criar uma classe Person simples:

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

O sublinhado em _firstName e _lastName é uma convenção de nomenclatura: ele informa a outros desenvolvedores que essas propriedades são internas e devem ser lidas e alteradas por meio do getter e do setter, não diretamente. JavaScript não impõe essa convenção.

Agora podemos usar esses getters e setters como propriedades:

// Crie uma nova instância de Person
const person = new Person('John', 'Doe');

// Use o getter
console.log(person.fullName); // Saída: John Doe

// Use o setter
person.fullName = 'Jane Smith';

// O setter atualizou as propriedades internas
console.log(person.fullName); // Saída: Jane Smith

Observe que não chamamos esses métodos com parênteses. Eles se comportam como propriedades, mas executam código quando são acessados ou modificados.

challenge icon

Desafio

Você recebeu uma classe User com uma propriedade age. Sua tarefa é adicionar um getter e um setter para age que:

  1. Getter get age(): retorna a idade armazenada
  2. Setter set age(newAge): valida se a idade está entre 0 e 120
    • Se for válida (0-120): armazene-a em this._age
    • Se for inválida: não a altere e registre "Invalid age!"

Experimente você mesmo

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

// Código de teste - não modifique
const user = new User("Alice", 25);
console.log(user.age);      // Deve exibir 25

user.age = 30;
console.log(user.age);      // Deve exibir 30

user.age = 150;             // Deve mostrar "Invalid age!"
console.log(user.age);      // Ainda deve exibir 30 (sem alterações)

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de JavaScript online