2
respostas

Porque do uso do _ ?

Não entendi muito bem essa parte do _ antes do nome das propriedades que seriam privadas.

Entendo que é para identificar que são privadas, já que, conforme explicado pelo professor, no JS não tem propriedades realmente privadas como no Java, por exemplo, mas mesmo não existindo como realmente deixá-las privadas, usar ou não o _ pra efeitos práticos de mudar o valor do atributo não teria diferença, correto?

Não to entendendo o uso delas dentro dos getters e setters.

Outra dúvida era sobre o cliente e o cliente, mas acho que entendi.

Edit: acho que entendi o porque usamos o contaCorrente.cliente = cliente1. Como aprendi POO no Java, os métodos Setters e Getters tinham o set e o get no proprio nome. Aqui ele usou o setter como "cliente" apenas.

Tem algum problema ou "contra-indicação" de alguma convenção eu usar o nome set setCliente(){}. Porque eu acho que ficaria mais fácil saber o que é um método e o que é uma propriedade dessa maneira. edit: Entendi porque deixar com o mesmo nome:

Quando eu coloco: contaCorrente.saldo = 200 ou contaCorrente._saldo = 200,

Como o JS é dinâmico, no primeiro caso, se eu não tiver um getter com o nome .saldo e eu codificar isso, ele vai criar uma nova propriedade do objeto, por isso que colocamos o nome do getter como sendo o nome da propriedade, mas sem o _?

No segundo caso, eu consigo alterar a propriedade, mesmo tendo criado um setter, isso que não to entendendo no JS.

Por exemplo: consigo alterar o saldo usando contaCorrente.saldo = 100 e também contaCorrente.saldo = 100, sendo assim, qual o sentido do setter, se ele não tá funcionando e eu consigo acessar diretamente pelo nome da propriedade?

2 respostas

Fala Igor, tudo bem?

Vamos lá, o uso do _ (underline) antes das propriedades serve para identificarmos que aquele campo é privado e não o modificar fora da classe, mas é apenas uma convenção da comunidade, para que caso alguém pegue o nosso código entenda que aquele campo não deve ser modificado fora da classe.

Usamos elas dentro dos getters e setters, pois usamos os getters e setters para nos comunicarmos com essas propriedades privadas não diretamente.

A ideia de criar os getters e setters seria "intermediar" a ação de setar (ou ler) algum valor á uma propriedade, podemos por exemplo validar o que está sendo adicionado antes mesmo de setar na propriedade saldo, se estamos esperando uma string, verificar se é realmente uma string que estamos recebendo, assim evitando erros durante o código, e também utilizamos pois como as nossas propriedades são privadas, precisamos de algum método para acessa-las, certo? Então para isso também utilizamos os getters e setters. Então você pode entender as funções deles de evitar o contato direto com as propriedades, a fim de evitar problemas futuros.

Mas resumindo, utilizamos os getters e setters para nos comunicarmos com alguma propriedade, mas não diretamente.

Você pode ver melhor sobre getters e setters clicando aqui para acessar um artigo da alura falando sobre o assunto.

Espero ter ajudado, bons estudos :D

Olá pessoal! Eu criei um tópico recentemente sobre isso, e agora que vi que o curso aqui tem uma área específica.

Matheus, você sabe se isso já não pode ser substituído pelo cerquilha(#)?

Pois como havia sido dito, estava em aprovação e agora, 2 anos depois, ainda não atualizaram lá no github. Porém existe uma documentação no Mozilla Developers que explica e encoraja o uso dele.

Forte abraço e aguardo um feedback ;D