Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uso do setter "Is not a Function"

Quando tento modificar o valor de nome explode no terminal um belo (novoUser.nome is not a function)

class User {
    #nome
    #email
    #nascimento
    #role
    #ativo
    constructor(nome, email, nascimento, role, ativo = true){
        this.#nome = nome;
        this.#email = email;
        this.#nascimento = nascimento;
        this.#role = role || 'estudante';
        this.#ativo = ativo;

    }
    get nome(){
       return this.#nome
    }
    get email(){
       return this.#email
    }
    get nascimento(){
        return this.#nascimento
    }
    get role(){
        return this.#role
    }
    get ativo(){
        return this.#ativo
    }
    set nome(novoNome){
       if(novoNome === "") {
            throw new Error("Digite um nome de verdade")
        }else{
            this.#nome = novoNome
        }
    }
    #montaObj(){
        return ({
            nome: this.#nome,
            email: this.#email,
            nascimento: this.#nascimento,
            role: this.#role,
            ativo: this.#ativo
        })
    }
    exibirInfos(){
        return this.#montaObj()
    }

}
const novoUser = new User('tião', 'tiao@gmail.com', '31/12/1999')
novoUser.nome("Perosvaldo")
console.log(novoUser.nome)
1 resposta
solução!

Olá! Os setters não podem ser chamados como funções comuns, pois são invocados automaticamente quando tentamos modificar uma propriedade do objeto. Sendo assim, o correto seria: novoUser.nome = "Perosvaldo" (o valor informado após o operador de atribuição fica disponível para o setter por meio do parâmetro novoNome).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software