2
respostas

Por que nesse formato não funcionou?

const pessoa = {
    nome:"Bruce Banner",
    dataNascimento:"25/01/1980",
    carteiraIdentidade:"997776-X",
    email:"profbanner@email.com",
    telefone:"+552877776666",
    cidade:"Cachoeiro de Itapemirim",
    estado:"ES"
 }

  pessoa.cpf="061461743-00"
  pessoa.seguroSocial = "2424"


 pessoa.carteiraIdentidade.substring(0,4)
 pessoa.cpf.substring(0,4)

 console.log(pessoa);
2 respostas

Fiz dessa forma depois, porém há uma forma mais elegante? Dessa forma funcionou

const pessoa = {
    nome:"Bruce Banner",
    dataNascimento:"25/01/1980",
    carteiraIdentidade:"997776-X",
    email:"profbanner@email.com",
    telefone:"+552877776666",
    cidade:"Cachoeiro de Itapemirim",
    estado:"ES"
 }

  pessoa.cpf="061461743-00"
  pessoa.seguroSocial = "2424"


 pessoa.carteiraIdentidade = pessoa.carteiraIdentidade.substring(0,4)
 pessoa.cpf = pessoa.cpf.substring(0,4)

 console.log(pessoa);

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!