1
resposta

É possível usar Getters/Setters e Constructor?

Estou no módulo 4 do curso, e vi o professor utilizado getters e setters para garantir a privacidade dos atributos privados, e também para a atribuição. Porém eu recentemente também realizei o curso "JavaScript: Objetos" aqui na Alura, e vi a professora utilizando o constructor. Gostaria de saber a diferença deles, se é possível usa-los juntos e quando é mais correto utilizar cada um.

1 resposta

Olá Kaio, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O método constructor é um método especial utilizado para inicializar e criar objetos de uma classe. Nesse método fornecemos os atributos que um objeto pertencente a classe deve conter. Imagine por exemplo uma classe Conta, que recebe como parâmetro para criação do objeto, o dígito identificador desta conta. Em código teríamos:

class Conta{
    constructor(numero){
        this.numero = numero;
    }
}

Agora, para criarmos o objeto, devemos passar como parâmetro o dígito identificador:

const conta = new Conta(10);

Já os métodos getter e setter são responsáveis por capturar um valor de um atributo e atribuir valor a um atributo respectivamente, como mostro abaixo:

Exemplo método getter

get saldo(){
    return this._saldo;
}

Exemplo de método setter

set saldo(valor){
    this._saldo = valor;
}

Até aqui, vimos que cada método, seja ele constructor, getter ou setter tem suas particularidades e um objetivo específico e inclusive, eles podem ser utilizados em conjunto e é até recomendado para sempre manter o encapsulamento dos atributos e além disso, dar ao usuário a opção de passar parâmetros na criação da classe de forma direta. Veja um exemplo prático:

class Conta{
    _saldo;

    constructor(numero){
        this.numero = numero;
        this._saldo = 0; 
    }

    get saldo(){
        console.log('Acessando o método get');
        return this._saldo;
    }

    set saldo(valor){
        console.log('Acessando o método set');
        this._saldo = valor;
    }

}

const conta = new Conta(10);

conta.saldo = 150;
console.log(conta.saldo);

Resultado:

Acessando o método set
Acessando o método get
150

A título de curiosidade, caso queira se aprofundar ainda mais neste assunto, recomendo a leitura do artigo da Alura This, Getters e Setters nas classes Javascript :

Conte sempre com a Alura para evoluir seus estudos.

Em caso de dúvidas fico à disposição.

Grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!