<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejercicio 2 - Clases</title>
<script type="text/javascript">
// Definición de la clase Cliente
function Cliente(nombre, direccion, telefono, nif) {
this.nombre = nombre;
this.direccion = direccion;
this.telefono = telefono;
this.nif = nif;
}
// Definición de la clase Elemento
function Elemento(descripcion, cantidad, precio) {
this.descripcion = descripcion;
this.cantidad = cantidad;
this.precio = precio;
}
// Definición de la clase Factura
function Factura(cliente, elementos) {
this.cliente = cliente;
this.elementos = elementos;
this.informacion = {
baseImponible: 0,
iva: 16,
total: 0,
formaPago: "contado"
};
};
// La información de la empresa que emite la factura se
// añade al prototype porque se supone que no cambia
Factura.prototype.empresa = {
nombre: "Nombre de la empresa",
direccion: "Direccion de la empresa",
telefono: "900900900",
nif: "XXXXXXXX"
};
// Métodos añadidos al prototype de la Factura
Factura.prototype.calculaTotal = function() {
for(var i=0; i<this.elementos.length; i++) {
this.informacion.baseImponible += this.elementos[i].cantidad * this.elementos[i].precio;
}
this.informacion.total = this.informacion.baseImponible * this.informacion.iva;
}
Factura.prototype.muestraTotal = function() {
this.calculaTotal();
alert("TOTAL = " + this.informacion.total + " euros");
}
// Creación de una factura
var elCliente = new Cliente("Cliente 1", "", "", "");
var losElementos = [new Elemento("elemento1", "1", "5"),
new Elemento("elemento2", "2", "12"),
new Elemento("elemento3", "3", "42")
];
var laFactura = new Factura(elCliente, losElementos);
laFactura.muestraTotal();
</script>
</head>
<body>
</body>
</html>
Descargar ZIP con la solución completa