提问人:Nick Bull 提问时间:9/3/2020 最后编辑:Nick Bull 更新时间:9/3/2020 访问量:40
使用类方法的部分应用程序
Partial application using class method
问:
假设我有以下内容:
class A {
_a = 3
method(arg) {
return arg + this._a;
}
}
我创建了一个部分应用程序,如下所示:
const part = function (fn) {
return function (arg) {
return fn(arg);
}
}
我按如下方式应用:
const a = new A();
const newFn = part(a.method, 5);
它抛出一个错误,即 .所以我知道我可以绑定函数:this is undefined
const newFn = part(a.method.bind(a), 5);
然后它会起作用,但这很糟糕!有没有办法在不传递上下文的情况下做到这一点?这包括不必将其作为参数传递(例如,,使用part(a, a.method, 5);
bind
)
请注意,实际上,我使用的是库中的类,所以很遗憾我无法重构它
只是为了扩展注释,这看起来像(没有解构,因为解构方法也会导致上下文问题:
const part = function (ctx) {
return function (fn) {
return function (arg) {
return fn.bind(ctx, arg);
}
}
}
const a = new A();
const partA = part(a);
// Now for all methods with the class A context I can do
const newFn = partA(a.method, 5);
答: 暂无答案
评论
a
a
bind