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

Não poderia utilizar "const" para encapsulamento?

Variáveis declaradas como "const" não seriam variáveis imutáveis? Se sim isso não deixaria mais simples o encapsulamento do objeto?

6 respostas
solução!

Olá meu aluno!

O const não deixa uma variável imutável, o que const faz é não permitir uma nova atribuição com o operador =.

Faça um teste no seu console do navegador:

const dia = new Date();
console.log(dia.getDate());
dia.setDate(1);
console.log(dia.getDate()); // será 1

Os métodos do objeto mudam seu estado, porque esses não foram definidos com const, e nem poderiam, porque precisam mudar.

Agora, se eu tentar usar o sinal de atribuição:

dia = new Date() // boom! Erro, não pode haver uma nova atribuição.

Sucesso e bom estudo.

Sim, eu entendo! O que quis dizer foi nas variáveis do meu objeto (não sei dizer se estou me expressando bem).

Por exemplo:

class Pessoa {

    constructor(fala){
        const this.fala = fala;
    }

}

Poderia usar isso? Ou fazer algo parecido?

Não pode usar isso. E mesmo que se pudesse você está recebendo um parâmetro que deseja repassar no constructor o que não faz sentido nenhum se o atributo fosse const.

As perguntas que você fez são respondidas facilmente com um teste que demonstrará que não funcionariam. Faça um teste, é um bom exercício experimentar.

Sim, bobeira minha! Obrigado!

Não foi bobeira não. Pode ser que você já tenha visto outra linguagem que faz isso. Mas JavaScript não faz.

Sucesso e bom estudo.

Obrigado! Realmente, uso angular com typescript e da pra fazer algo parecido, além é claro de encapsular usando private. Mas gostaria muito de entender melhor javascript, por isso estou fazendo o curso! Como fiquei com dúvida achei melhor perguntar hehe