2
respostas

[Dúvida] Questão sobre inicialização de objetos em JavaScript

Prezados membros do fórum,

Estou buscando esclarecimento sobre um comportamento observado em JavaScript, especificamente relacionado à inicialização de objetos de uma classe.

Ao explorar um exemplo de código, deparei-me com a definição de uma classe User. No construtor desta classe, são atribuídos valores padrão para o nome, e-mail e CPF, como segue: Código exemplo, criando a Classe User com um método estático

Contudo, em outro trecho de código, observei uma tentativa de inicializar um novo objeto da classe User com parâmetros diferentes, como demonstrado abaixo: Inicializando um novo objeto da classe User

O construtor da classe User não espera receber parâmetros, uma vez que os valores já estão definidos internamente. Assim, qualquer objeto instanciado a partir dessa classe deve refletir os valores padrão ('camila', 'c@c.com' e '12312312312').

Portanto, a saída esperada é Camila, e não Carol Código exemplo completo

Agradeço antecipadamente por qualquer esclarecimento ou contribuição sobre esse aspecto.

2 respostas

Olá Pedro! Tudo bem?

Na sua classe User, o construtor é definido sem parâmetros e inicializa as propriedades nome, email e cpf com valores fixos. Isso significa que, independentemente dos argumentos que você passar ao criar uma nova instância da classe User, esses valores não serão utilizados, pois o construtor não está configurado para aceitá-los.

Portanto, todos os objetos criados a partir desta classe terão os valores 'Camila', 'c@c.com' e '12312312312', como especificado no construtor.

Quando você tenta criar um novo objeto User passando outros valores como 'Carol', 'c@c.com', '12312312312', esses valores não são considerados, pois o construtor da sua classe não foi definido para aceitar parâmetros externos. A saída esperada, portanto, é sempre os valores padrões definidos no construtor da classe.

Se você deseja que a classe User possa ser inicializada com diferentes valores, você precisa modificar o construtor para aceitar parâmetros e usar esses parâmetros para definir as propriedades do objeto. Por exemplo:

class User {
  constructor(nome, email, cpf) {
    this.nome = nome || 'Camila'; // Utiliza o valor de 'nome' se fornecido, caso contrário usa 'Camila'
    this.email = email || 'c@c.com'; // Utiliza o valor de 'email' se fornecido, caso contrário usa 'c@c.com'
    this.cpf = cpf || '12312312312'; // Utiliza o valor de 'cpf' se fornecido, caso contrário usa '12312312312'
  }

  exibirInfos() {
    return `${this.nome}, ${this.email}, ${this.cpf}`;
  }
}

Com essa modificação, você pode criar instâncias de User com diferentes valores ou usar os valores padrão se nenhum valor for fornecido.

Espero ter ajudado e bons estudos!

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

Obrigado, Armano. Eu havia compreendido a questão da inicialização, mas o ponto principal que eu queria abordar, porém, não expressei claramente, é que a saída esperada no exemplo é Carol, quando, na verdade, deveria ser Camila. Isso parece ser um erro no material, como evidenciado pelas imagens abaixo.

Sendo assim, gostaria de sugerir a alteração desse pequeno detalhe no material. Insira aqui a descrição dessa imagem para ajudar na acessibilidade