每次调用/调用众多对象方法中的一个时,将对象计数变量增加1



假设我们有以下对象:

class Foo{
constructor(){
this.count = 0;
}
method1() { <does something> }
method2() { <does something else> }
method3() { <does something even more> }
}

显然,现在我们可以向EACH方法添加以下代码行,计数将更新:

this.count++;

虽然我知道这只是一行代码,但可以说这是冗余的一行代码。那么,是否有一种方法可以检测对象方法是否被调用,然后更新计数?

您可以遍历要添加的方法的单独对象,并让它们先执行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);