Skip to content

Commit 3ed2f9d

Browse files
committed
24 - js - DECORADORES
1 parent 6b8b473 commit 3ed2f9d

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
_____________________________________
3+
https://github.com/kenysdev
4+
2024 - JavaScript
5+
_______________________________________
6+
#24 DECORADORES
7+
---------------------------------------
8+
 * EJERCICIO:
9+
 * Explora el concepto de "decorador" y muestra cómo crearlo
10+
 * con un ejemplo genérico.
11+
 *
12+
 * DIFICULTAD EXTRA (opcional):
13+
 * Crea un decorador que sea capaz de contabilizar cuántas veces
14+
 * se ha llamado a una función y aplícalo a una función de tu elección.
15+
*/
16+
// ________________________________________________________
17+
function myDecorator(func) {
18+
return function (...args) {
19+
console.log("\nAntes de que se llame a la función.");
20+
func(...args);
21+
console.log("Después de llamarla.");
22+
};
23+
}
24+
25+
function sayHello(firstName, lastName) {
26+
console.log(`Hola, ${firstName} ${lastName}!`);
27+
}
28+
29+
const decoratedSayHello = myDecorator(sayHello);
30+
decoratedSayHello("Zoe", "Roy");
31+
32+
console.log("\n______________________");
33+
function classDecorator(Class) {
34+
return class extends Class {
35+
greet() {
36+
console.log("\nAntes de llamar al método");
37+
super.greet();
38+
console.log("Después de llamar al método");
39+
}
40+
};
41+
}
42+
43+
// ________________________________________________________
44+
console.log("DIFICULTAD EXTRA");
45+
46+
function countCalls(func) {
47+
const wrapper = function (...args) {
48+
wrapper.calls++;
49+
func(...args);
50+
console.log(`Ha sido llamada ${wrapper.calls} veces.`);
51+
};
52+
wrapper.calls = 0;
53+
return wrapper;
54+
}
55+
56+
const functionA = countCalls(function (funcName) {
57+
console.log(`\nLa función '${funcName}':`);
58+
});
59+
60+
const functionB = countCalls(function (funcName, example) {
61+
console.log(`\nLa función ${funcName} - ${example}:`);
62+
});
63+
64+
functionA("A");
65+
functionA("A");
66+
functionA("A");
67+
68+
functionB("B", "args");
69+
functionB("B", "args");
70+

0 commit comments

Comments
 (0)