Skip to content

Commit 21e755a

Browse files
committed
#24 - Javascript
1 parent 2fa5b2f commit 21e755a

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de "decorador" y muestra cómo crearlo
4+
* con un ejemplo genérico.
5+
*/
6+
let alumno = function (nombre) {
7+
this.nombre = nombre;
8+
this.mostrar = function () {
9+
console.log(`Alumno: ${this.nombre}`);
10+
};
11+
}
12+
13+
let alumnoDecorado = function (alumno, promedio, curso) {
14+
this.alumno = alumno;
15+
this.nombre = alumno.nombre; //igual a nombre de alumno
16+
this.promedio = promedio;
17+
this.curso = curso;
18+
19+
this.mostrar = function() {
20+
console.log(`Alumno decorado: ${this.nombre}. Promedio: ${this.promedio}. Curso: ${this.curso}`);
21+
};
22+
}
23+
console.log('>>>Ejemplo Genérico')
24+
let miAlumno = new alumno('Jaimito');
25+
miAlumno.mostrar();
26+
27+
let miAlumnoDecorado = new alumnoDecorado(miAlumno, 7, "4to A");
28+
miAlumnoDecorado.mostrar();
29+
30+
/*
31+
* DIFICULTAD EXTRA (opcional):
32+
* Crea un decorador que sea capaz de contabilizar cuántas veces
33+
* se ha llamado a una función y aplícalo a una función de tu elección.
34+
*/
35+
36+
let numeroAleatorio = function (top = 10) {
37+
console.log(Math.floor(Math.random() * top));
38+
}
39+
40+
let contarEjecuciones = function (func) {
41+
let count = 0;
42+
this.ejecutar = function (param){
43+
count ++;
44+
console.log(`Funcion <${func.name}> ejecutada ${count} veces`);
45+
func(param);
46+
}
47+
}
48+
49+
console.log('\n>>>Dificultad Extra')
50+
let contador = new contarEjecuciones(numeroAleatorio)
51+
contador.ejecutar(5);
52+
contador.ejecutar(3);
53+
contador.ejecutar(4);
54+
contador.ejecutar(10);
55+
contador.ejecutar();

0 commit comments

Comments
 (0)