JavaScript > Extender (not published cause it's not a good example)

by academiax

JavaScript

function moneda(país) {
  return país === "COL" ? "Peso" : "Dólar";
}

function comparador(receptor, monto) {
  const enviado = `ha sido enviado \nvalor enviado: ${monto}`;
  const recibido = `ha sido recibido en su cuenta \nvalor recibido: ${monto}`;
  return receptor === false ? enviado : recibido;
}

function enviar(receptor, cantidad, monto) {
  const prev = cantidad;
  if (receptor === true) {
    const curr = prev + monto;
    return `Cuenta antes: ${prev} \nSaldo ahora: ${curr}`
  } else {
    const curr = prev - monto;
    return `Saldo antes: ${prev} \nSaldo ahora: ${curr}`
  }
}

class Propietario {
  constructor(nombre, id, apellido, monto, país, estado, saldo) {
    this.id = id;
    this.nombre = nombre;
    this.apellido = apellido;
    this.monto = monto;
    this.moneda = moneda(país);
    this.estado = comparador(estado, monto);
    this.saldo = enviar(estado, saldo, monto);
  }

  pantalla() {
  let pais = moneda(this.país);
  let estado = comparador(this.estado, this.monto);
  let saldo = comparador(this.estado, this.monto);
    console.log(`
    	Querido ${this.nombre} ${this.apellido}. 
    	Nos complace informarle que el monto de ${this.monto} ${this.estado}.
			ID: ${this.id}
			Tipo de cambio: ${this.país}${this.saldo}\n
    `);
  }
}

class Heredero extends Propietario {
  constructor(nombre, id, apellido, monto, país, estado, saldo) {
    super(nombre, id, apellido, monto, país);
    this.nombre = nombre;
    this.id = id;
    this.país = moneda.call(this, país);
    this.estado = comparador.call(this, estado, monto);
    this.saldo = enviar.call(this, estado, saldo, monto);
  }
};

Heredero.prototype = Object.create(Propietario.prototype);

const old = new Propietario("Jhon", 23423423, "Hoyos", 100000, "US", false, 400000)
const hered = new Heredero("Mauricio", old.id, old.apellido, old.monto, "COL", true, 0);

old.pantalla();
hered.pantalla();