Javascript Arrow函数是否具有类似Groovy闭包的委托属性
使用groovy,您可以运行closure,如下所示:Javascript Arrow函数是否具有类似Groovy闭包的委托属性,javascript,groovy,functional-programming,ecmascript-6,Javascript,Groovy,Functional Programming,Ecmascript 6,使用groovy,您可以运行closure,如下所示: instanceB.methodB({ methodA(3); methodA(3); }); //---- methodB definition class B{ def methodB(Closure c){ c.delegate=new A(); //!!!---The question is about this "delegate"
instanceB.methodB({
methodA(3);
methodA(3);
});
//---- methodB definition
class B{
def methodB(Closure c){
c.delegate=new A(); //!!!---The question is about this "delegate" in JS
c.call();
}
}
正如您可能注意到的,我们在闭包内直接调用methodA
,而不调用this
(this.methodA()
)。
这是因为此指令c.delegate=new A()
:因此,可以在那里调用new A()
的所有方法
我的问题:
如何使其与使用箭头函数的Javascript一起工作:ES6或ES7
箭头函数是否具有类似于委托的功能
伪代码:
不,箭头函数没有这样的功能,也没有任何其他功能 范围在JS中是由词汇决定的,也就是说,它取决于您在何处声明函数,并且您不能从外部注入任何内容或修改它
您的最佳选择可能是,尽管您必须将它放在(箭头)函数中,而不是放在调用站点,或者
eval
否,箭头函数没有这样的功能,也没有任何其他功能
范围在JS中是由词汇决定的,也就是说,它取决于您在何处声明函数,并且您不能从外部注入任何内容或修改它
您的最佳选择可能是,尽管您必须将它放在(箭头)函数中,而不是放在调用站点,或者
eval
是否有任何更新?Groovy和JSI都不知道这与arrow函数有什么关系。JS中没有针对它们的特殊范围。您可能希望查看任何更新?Groovy和JSI都不知道这与arrow函数有什么关系。在JS中没有特殊的作用域。您可能想看看
instanceB.methodB(()=>{
methodA(3);
methodA(4);
});
class B{
methodB(arrow){
arrow.delegate=new A(); // What's the right way, if any ?
arrow.call();
}
}