Bom dia Álvaro, tudo certo?
Você trouxe um ótimo questionamento!
Quando fazemos uma operação como pessoa.cpf.substring(0,4)
, esse método vai nos retornar uma substring do CPF com determinados valores. Mas esse método não vai alterar o valor que está sendo guardado dentro do objeto.
Imagine o seguinte objeto:
const contaCorrente = {
correntista: "Sullivan",
valor: 100
}
Se executarmos uma linha que contém apenas:
contaCorrente.valor + 10;
O que vai acontecer com o atributo valor
dentro do objeto contaCorrente
? Ele vai passar a armazenar 110
ou se manter em 100
? Se você considerou que o valor armazenado vai se manter em 100
, você está correto. Neste cenário, fazer uma conta com um atributo não altera o seu valor. Para alterar o valor é necessário reatribuir o valor ou utilizar um método que, na sua definição, faça alguma alteração ao atributo.
Esse exemplo é similar ao que acontece ao utilizar o método substring()
. De acordo com a documentação, esse método retorna uma nova string, sem alterar a string onde o método foi chamado.
Então uma outra forma que você poderia fazer essa operação de forma mais "elegante" seria ter uma classe para definir a pessoa e utilizar um método que valida e atribui um novo CPF à essa pessoa.
Espero ter ajudado e bons estudos!