我如何实现一个使类的所有方法自动链接的装饰器?
我有以下类(class):
class MyClass {
async foo() { console.log(1); }
async bar() { console.log(2); }
}
我希望能够做到以下几点:
@chainableMethods
class MyClass {
...
}
const myInstance = MyClass();
myInstance
.foo()
.bar();
最佳答案
你可以试试这个
function chainableMethods (constructor) {
let funcs = Object.getOwnPropertyNames(constructor.prototype);
for (var i in funcs) {
let func = funcs[i];
let oldFunc = constructor.prototype[func];
constructor.prototype[func] = (...args) => {
let result = oldFunc.apply(this, args);
return result || constructor.prototype;
// Using 'result ||' for cases when a function does return something useful
// You can remove it if it doesn't suit your requirement.
}
}
}
如果您打算仅在 foo
的 promise 得到解决后才运行 bar
,那么我认为这是不可能的。
关于javascript - 实现用于链接类方法的 JS 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54757815/