Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] novoUser.nome = "joao"

Dps de passar um valor pra novoUser. nome que está privado, se tentar adicionar outro valor nele com novoUser.nome = "sksdnfas" ele muda. mas deveria dar stackOver correto?

export default 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 || "estudande"
  this.#ativo = ativo
}

get nome(){
  return this.#nome
}
get email(){
  return this.#email
}

set nome(novoNome) {
  if (novoNome === "") {
    throw new Error('Formato inválido');
  } else if (typeof novoNome === 'number' || !isNaN(Number(novoNome))) {
    throw new Error('Somente letras');
  }
  this.#nome = novoNome;
}
exibirInfors() {
  return `${this.#nome}, ${this.#email}`;
}

}

const novoUser = new User("VICTOR","victor@v","222222")
console.log(novoUser.nome)
novoUser.nome = "joao"
2 respostas
solução!

Olá Victor, tudo bem? Espero que sim!

O código está escrito corretamente para definir e obter o valor do atributo nome de um objeto User.

A propriedade nome é declarada como um atributo privado na classe User usando o # antes do nome (#nome). Isso significa que o atributo só pode ser acessado ou modificado dentro da própria classe.

A declaração get nome() define um getter para o atributo nome, permitindo que você obtenha seu valor por meio da sintaxe novoUser.nome.

A declaração set nome(novoNome) define um setter para o atributo nome, permitindo que você atribua um novo valor a ele por meio da sintaxe novoUser.nome = "joao".

No entanto, o setter possui algumas validações para garantir que o novo valor seja válido. Ele verifica se o novo nome não é uma string vazia e se não é um número. Caso alguma dessas condições seja verdadeira, é lançada uma exceção com uma mensagem de erro correspondente.

portanto, se você fizer novoUser.nome = "joao", o valor do atributo nome será atualizado para"joao" sem causar um erro de StackOverflow. O código fornecido parece estar funcionando conforme esperado.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!

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

Entendi! Obrigado pela atenção.