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();