gpt4 book ai didi

javascript - 每次使用 JS 调用类中的任何函数时运行一个函数

转载 作者:行者123 更新时间:2023-12-01 15:23:22 24 4
gpt4 key购买 nike

我有这样的简单类(class):

module.exports = class MyClass {

function middleware() {
console.log('call me before')
}

function a() {

}
function b() {

}

function c() {

}
}

所以想法是,当有人调用函数 a、b、c 时,我想在执行 a、b、c 之前调用中间件。我该怎么做?

所以,我可以将 middleware() 放到每个函数中,但我想要一些动态的方法来做到这一点。

最佳答案

您可以通过遍历所有自己的属性名称来重写类原型(prototype)的所有方法(Object.keysfor..in 在这里不起作用,因为类方法不可枚举),然后用调用原始方法的新方法替换原始方法方法还调用中间件。这样类行为不会改变,但会调用中间件。

 class MyClass {
a() { console.log("a"); }
}

function middleware() {
console.log("works");
}

for(const key of Object.getOwnPropertyNames(MyClass.prototype)) {
const old = MyClass.prototype[key];
MyClass.prototype[key] = function(...args) {
middleware(...args);
old.call(this, ...args);
};
}

(new MyClass).a();

关于javascript - 每次使用 JS 调用类中的任何函数时运行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51903116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com