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

Imutabilidade - Date - Object

No exemplo do exercício foi modificado o construtor:

constructor(data, quantidade, valor){
        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;
        Object.freeze(this);
    }

Criando um novo Objeto Date no momento de referenciar o objeto.

  this._data = new Date(data.getTime());

Posso fazer isso com qualquer Classe? exemplo:

this._aluno = new Aluno(aluno);
8 respostas
solução!

Pode sim Fernando, porém, deve ver se o contrutor da classe que você está fazendo isso, suporta passar parametros dessa forma. Pegou a ideia?

Wanderson Macêdo, peguei sim! Era apenas essa a dúvida! Porem ao tentar implementar a lógica não funcionou utilizando Objeto Aluno como parâmetro... Classe em JavaScript aceita mais de um construtor?

class Aluno{

    construtor(nome){
        this._nome = nome;
    }

    construtor(aluno){
        this._nome = aluno.nome;
    }

    get nome(){
        return this._nome;
    }

}

ou nesse caso, simplifico e passo

this._aluno = new Aluno(aluno.nome);

...ao invés de criar um construtor que recebe um aluno.

class Aluno{

    construtor(nome){
        this._nome = nome;
    }

    get nome(){
        return this._nome;
    }

}

Não suporta mais de um não Fernando, vou deixar link do MDN pra você ler mais a respeito enquanto estuda aqui com a gente (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes)

Acho que uma alternativa ao que você pretende, se é que eu entendi bem, é utilizar Object.create(aluno). Ele vai lhe retornar um objeto baseado em outro objeto. Vou deixar link aqui também (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create)

Oi Fernando! Só pode haver um constructor por classe, não há sobrecarga deconstrutor. Não há tipagem estática como em Java também. Tudo bem?

Wanderson Macêdo, estava querendo criar um outro construtor para testar algum outro caso possível de implementação.

Flavio, legal, estava pensando na lógica Java mesmo. Que pena não haver sobrecarga do construtor. Um objeto só pode ser instanciado de uma maneira então?

Valeu pelas Respostas, ficou bem esclarecido.

Isso mesmo, meu aluno. Mas nada o impede de aplicar o padrão de projeto Builder para criar um objeto de diversas formas. Aliás, ele é aplicado no mundo Java para ajudar a construir objetos mais complexos.

Sucesso e bom estudo!

Gratidão Flavio! sempre nos incentivando com muito conteúdo e conhecimento.Aproveitando pra dizer que gostei muito das soluções utilizando Ternário e Resto de divisão, mostrando como é possível utilizar a lógica matemática dentro da lógica da linguagem. Muito Inspirador!

Quem é bom de matemática sempre terá um diferencial. Eu gostaria de ser melhor nesse quesito ;)

Sucesso e bom estudo !