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

Aula 2 - Parte 8: Programação Defensiva

Boa noite,vendo o esforço que utilizamos para manter nossa classe protegida criando novas instancias de Date, fiquei me questionando que mesmo aplicando a técnica apresentada no constructor e no getter, ainda podemos fazer um n1._data.setDate(12);, então tentei colocar na classe após criar o Date o seguinte código Object.freeze(this._data);. Porém não resolveu o problema. Minha dúvida é se existe alguma forma de eliminarmos essa "falha" restante no encapsulamento?

1 resposta
solução!

Isso era esperado como explico no vídeo. Não há uma maneira direta e encapsular propriedades de uma classe e a convenção do underline é a mais utilizada.

Há outros como criar uma closure e criar as propriedades como var mas isso não escala em termos de performance.

Há também através de symbol mas não é 100%. Na especificação do ES9 há a proposta do modificador private.

Sucesso e bom estudo meu aluno.