1
resposta

[Dúvida] this na questão 5 dos exercícios

A questão 5 dos exercícios pede uma função "mostrarSaldo" que utilize o this para chamar o saldo:

"Crie uma função chamada mostrarSaldo que aceita o objeto cliente como parâmetro e imprime no console o nome do cliente e o saldo da sua conta utilizando this para acessar as propriedades do objeto."

Fazendo sozinho não consegui encontrar uma forma de usar o "this" e mesmo na resolução disponibilizada não foi usado.

Existe alguma forma de resolver a questão com o "this" nesse caso? Se não, não seria melhor reformular a questão pra evitar alguma confusão? Eu me perdi um pouco e demorei mais do que deveria tentando encontrar uma forma de usar o this mesmo já tendo conseguido o retorno desejado.

Resolução da questão 5 com a função "mostrarSaldo":

const contaBancaria = {
  titular: 'Igor Regis de Oliveira',
  saldo: 7000,
  depositar: function (valorDepositado) {
    this.saldo += valorDepositado;
  },
  sacar: function (valorSacado) {
    if (this.saldo >= valorSacado) {
      this.saldo -= valorSacado;
    } else {
      console.log(`Não há saldo suficiente
      Saldo atual: ${this.saldo}R$`);
    }
  }
}

const cliente = {
  nome: 'Igor',
  conta: contaBancaria
}

function mostrarSaldo(objetoCliente) {
  console.log(`Cliente: ${objetoCliente.nome}`);
  console.log(`Saldo: ${objetoCliente.conta.saldo}`);
}

mostrarSaldo(cliente);
1 resposta

Olá! A única forma, ao meu ver, é fazendo ''mostrarSaldo'' ser um método do Objeto ''cliente'' que você criou, ai sim daria pra usar o ''this'' pra se referir e esse objeto específico. Não vejo formas de fazer isso com ''mostrarSaldo'' sendo uma função avulsa e mesmo se usasse métodos como ''call'', não precisaria receber o objeto cliente como parâmetro de ''mostrarSaldo'' e sim como parâmetro de ''call''. Refiz aqui o código e ficou assim, mas realmente esta atividade está um pouco confusa por essa espeficicação de utilizar o ''objeto'' como parâmetro. Se mais alguém aqui do fórum tiver outras ideias gostaria de saber também.

const cliente = {
  nome: 'Igor',
  conta: contaBancaria,
  mostrarSaldo: function() {
    console.log({
        Cliente: `${this.nome}`,
        Saldo: `${this.conta.saldo}`
    })
  }
};

cliente.mostrarSaldo()