Pesquise sobre valores primitivos e não primitivos e ainda sim continuo com dúvida. Segundo o professor do vídeo, o teste feito alterando o objeto "valor" dentro do método transferir não foi efetivo devido a natureza do objeto de tipo number ser primitivo e imutável, porém, reparei que ele alterou a variável após a realização do método, e fiz o teste com a alteração após o método transferir. E deu certo, houve alteração.
class ContaCorrente {
saldo = 0
cliente
sacar(valor) {
if (this.saldo >= valor) {
this.saldo -= valor
return valor
}
}
depositar(valor) {
if (valor <= 0) {
return
}
this.saldo += valor
}
tranferir(valor, conta) {
this.sacar(valor)
conta.depositar(valor)
}
}
const cliente1 = new Cliente()
cliente1.nome = 'Ricardo'
const cliente2 = new Cliente()
cliente2.nome = 'Alice'
const contaCorrenteRicardo = new ContaCorrente()
contaCorrenteRicardo.cliente = cliente1
const contaCorrenteAlice = new ContaCorrente()
contaCorrenteAlice.cliente = cliente2
contaCorrenteRicardo.saldo = 200
const valor = 20
contaCorrenteRicardo.tranferir(valor, contaCorrenteAlice)
console.log(contaCorrenteAlice)
console.log(contaCorrenteRicardo)
Realizando esse código, o terminal imprime a resposta correta, sendo o saldo de Ricardo 180 e o de Alice 20. Alterando a variável valor depois da realização do método, não houve mudança no terminal
tranferir(valor, conta) {
this.sacar(valor)
conta.depositar(valor)
valor = 30
}
Já alterando o variável valor antes da realização do método, obtemos uma alteração no terminal :
tranferir(valor, conta) {
valor = 30
this.sacar(valor)
conta.depositar(valor)
}
Dessa maneira, o computador entendo a variável valor como 30, ou seja, ela pode sim ser alterada.