2016-07-28 70 views
0

使用Groovy,你可以像下面運行關閉不Arrow功能具有委職能屬性如Groovy封閉

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內封閉無thisthis.methodA())。 這是因爲這個指令c.delegate=new A():因此,在那裏可以調用new A()的所有方法。

我的問題:

如何使這種使用箭功能的工作原理使用Javascript:要麼ES6或ES7。

箭頭函數是否有類似delegate

僞代碼:

instanceB.methodB(()=>{ 
    methodA(3); 
    methodA(4); 
}); 
class B{ 
    methodB(arrow){ 
     arrow.delegate=new A(); // What's the right way, if any ? 
     arrow.call(); 
    } 

} 
+0

有沒有更新?沒有人知道Groovy&JS –

+0

我不知道這與箭頭函數有什麼關係。 JS中沒有特別的範圍。 – Bergi

+0

你可能想看看http://stackoverflow.com/q/21562973/1048572 – Bergi

回答

2

沒有,箭頭功能不具有這樣的功能,我也沒有任何其他功能。

範圍在JS詞彙確定,即它取決於你在哪裏聲明你的職責,你不能注入任何東西,或從外部對其進行修改。

您最好的選擇可能是with statement,但您必須將其放在您的(箭頭)功能中,而不是在呼叫站點或eval

+0

可能由於@Bergi –