|
| 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