Variáveis declaradas como "const" não seriam variáveis imutáveis? Se sim isso não deixaria mais simples o encapsulamento do objeto?
Variáveis declaradas como "const" não seriam variáveis imutáveis? Se sim isso não deixaria mais simples o encapsulamento do objeto?
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