Skip to content

Instantly share code, notes, and snippets.

@yagopv
Created November 13, 2012 19:43
Show Gist options
  • Save yagopv/4067922 to your computer and use it in GitHub Desktop.
Save yagopv/4067922 to your computer and use it in GitHub Desktop.
Javascript patterns. Revealing Prototype
//Prototype
function Cuenta(numerocuenta, saldo) {
this.numerocuenta = numerocuenta;
this.saldo = saldo;
};
var Contabilidad = function(cuentas) {
//Propiedades públicas
this.Cuentas = cuentas || new Array();
this.SaldoTotal = 0;
};
Contabilidad.prototype = function () {
//Variables y métodos privados
_nuevaCuenta = function (numerocuenta,saldo) {
this.Cuentas.push(new Cuenta(numerocuenta, saldo));
},
_eliminarCuenta = function (numerocuenta) {
_borrar(this.Cuentas, numerocuenta);
},
_borrar = function (cuentas, numerocuenta) {
var j = 0;
while (j < cuentas.length) {
if (cuentas[j].numerocuenta == numerocuenta) {
cuentas.splice(j, 1);
return;
} else { j++; }
}
},
_modificarSaldo = function (numerocuenta, saldo) {
_modificar(this.Cuentas, numerocuenta, saldo);
},
_modificar = function (cuentas,numerocuenta,saldo) {
var j = 0;
while (j < cuentas.length) {
if (cuentas[j].numerocuenta == numerocuenta) {
cuentas[j].saldo += saldo;
return;
} else { j++; }
}
},
_calcularSaldoTotal = function () {
var j = 0;
this.SaldoTotal = 0;
while (j < this.Cuentas.length) {
this.SaldoTotal += this.Cuentas[j].saldo;
j++;
}
}
// Métodos públicos
return {
nuevaCuenta: _nuevaCuenta,
eliminarCuenta: _eliminarCuenta,
modificarSaldo: _modificarSaldo,
calcularSaldoTotal : _calcularSaldoTotal
}
}();
var contabilidad = new Contabilidad(new Array());
contabilidad.nuevaCuenta(111111, 100.00);
contabilidad.nuevaCuenta(222222, 200.00);
contabilidad.modificarSaldo(111111, 100.00);
contabilidad.eliminarCuenta(111111);
contabilidad.calcularSaldoTotal();
var contabilidad2 = new Contabilidad(new Array());
contabilidad2.nuevaCuenta(111111, 100.00);
contabilidad2.nuevaCuenta(222222, 200.00);
contabilidad2.nuevaCuenta(333333, 200.00);
contabilidad2.nuevaCuenta(444444, 200.00);
contabilidad2.modificarSaldo(111111, 1000.00);
contabilidad2.eliminarCuenta(333333);
contabilidad2.calcularSaldoTotal();
var contabilidad3 = new Contabilidad(new Array(new Cuenta(111111, 100.00), new Cuenta(222222, 200.00)));
contabilidad3.nuevaCuenta(333333, 100.00);
contabilidad3.calcularSaldoTotal();
Contabilidad.prototype.calcularSaldoTotal = function () {
var j = 0;
this.SaldoTotal = 0;
while (j < this.Cuentas.length) {
this.SaldoTotal += this.Cuentas[j].saldo;
j++;
}
alert("Metodo extendido")
}
Contabilidad.prototype.iniciarSaldo = function () {
this.SaldoTotal = 0;
}
contabilidad.calcularSaldoTotal();
contabilidad.iniciarSaldo();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment