This 使用类方法的部分应用程序

This 使用类方法的部分应用程序,this,bind,es6-class,This,Bind,Es6 Class,假设我有以下几点: A类{ _a=3 方法(arg){ 返回arg+this.\u a; } } 我创建了一个部分应用程序: const部分=函数(fn){ 返回函数(arg){ 返回fn(arg); } } 本人申请如下: const a=new a(); 常数newFn=零件(a.方法,5); 它抛出一个错误,这是未定义的。因此我理解我可以绑定函数: const newFn=part(a.method.bind(a),5); 然后它会起作用,但这太糟糕了!有没有一种方法可以做到这一点

假设我有以下几点:

A类{
_a=3
方法(arg){
返回arg+this.\u a;
}
}
我创建了一个部分应用程序:

const部分=函数(fn){
返回函数(arg){
返回fn(arg);
}
}
本人申请如下:

const a=new a();
常数newFn=零件(a.方法,5);
它抛出一个错误,
这是未定义的
。因此我理解我可以绑定函数:

const newFn=part(a.method.bind(a),5);
然后它会起作用,但这太糟糕了!有没有一种方法可以做到这一点而不必传递上下文?这包括不必将其作为参数传递(例如,
part(a,a.method,5);
,使用
bind
进行重构)

请注意,实际上,我使用的是一个库中的类,所以很遗憾,我无法重构它


仅对注释进行扩展,它看起来类似于(不进行分解,因为分解方法也会导致上下文问题:

const部分=函数(ctx){
返回函数(fn){
返回函数(arg){
返回fn.bind(ctx,arg);
}
}
}
常数a=新的a();
常数部分a=部分(a);
//现在对于具有类A上下文的所有方法,我可以
常数newFn=第a部分(a.方法,5);

到目前为止,我倾向于分解
a
的方法,然后在部分应用程序中使用
a
作为
bind
的参数创建另一层。如果可能的话,我希望避免这种情况!事实证明,你甚至不能对类进行方法的分解(