Digamos que tenemos el siguiente objeto:
class Foo{ constructor(){ this.count = 0; } method1() { <does something> } method2() { <does something else> } method3() { <does something even more> } }Ahora, obviamente, podemos agregar la siguiente línea de código a CADA método y el conteo se actualizará:
this.count++;Si bien sé que es solo un código de línea, se puede decir que es una línea de código redundante. Entonces, ¿hay alguna forma de que podamos detectar si se ha invocado un método de objeto, sin importar cuál sea, y luego actualizar el conteo?
Puede iterar sobre un objeto separado de métodos para agregar en su lugar, y hacer que primero hagan this.count++ .
class Foo{ constructor(){ this.count = 0; } } const methods = { method1() { console.log('m1'); }, method2() { console.log('m2'); }, method3() { console.log('m3'); }, }; for (const [key, value] of Object.entries(methods)) { Foo.prototype[key] = function(...args) { this.count++; value(...args); } } const f = new Foo(); f.method1(); f.method1(); f.method2(); console.log(f.count);