Skip to content

Commit 8a6a910

Browse files
committed
#24 - JavaScript
1 parent 53acee7 commit 8a6a910

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de "decorador" y muestra cómo crearlo
4+
* con un ejemplo genérico.
5+
*/
6+
7+
function withprintResult(func) {
8+
return function (...parameters) {
9+
console.log("Parámetros:", parameters)
10+
const result = func(...parameters)
11+
console.log("Resultado:", result)
12+
return result
13+
}
14+
}
15+
16+
function sum(a, b) {
17+
return a + b
18+
}
19+
20+
function multiply(a, b) {
21+
return a * b
22+
}
23+
24+
const sumDecorator = withprintResult(sum)
25+
const multiplyDecorator = withprintResult(multiply)
26+
27+
sumDecorator(2, 1)
28+
multiplyDecorator(2, 3)
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+
function counterDecorator(func) {
37+
let counter = 0;
38+
return function (...parameters) {
39+
counter++;
40+
console.log(`La función ha sido llamada ${counter} veces`)
41+
return func(...parameters)
42+
};
43+
}
44+
45+
function firstFunction() {
46+
console.log("Función ejecutada")
47+
}
48+
49+
const decoratedFunction = counterDecorator(firstFunction)
50+
51+
decoratedFunction()
52+
decoratedFunction()
53+
decoratedFunction()

0 commit comments

Comments
 (0)