2016-07-28 13 views
0

Mit stark, können Sie Schließung wie folgt ausgeführt werden:Does Pfeil Funktion wie Groovy Closure-Attribut hat delegieren

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(); 
     } 

    } 

Wie Sie bemerken können, rufen wir direkt methodA innerhalb Schließung ohne this (this.methodA()). Dies ist wegen dieser Anweisung c.delegate=new A(): Daher können alle Methoden von new A() dort aufgerufen werden.

Meine Frage:

Wie dies mit Javascript machen arbeitet mit Pfeil-Funktionen: Entweder ES6 oder ES7.

Hat Arrow-Funktionen etwas wie delegate?

Pseudo-Code:

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

} 
+0

Jedes Update? Keiner kennt Groovy & JS –

+0

Ich habe keine Ahnung was das mit Pfeilfunktionen zu tun hat. Es gibt kein spezielles Scoping für sie in JS. – Bergi

+0

Vielleicht möchten Sie einen Blick auf http://StackOverflow.com/Q/21562973/1048572 – Bergi

Antwort

2

Nein, Pfeil Funktionen haben keine solche Funktion und weder andere Funktionen haben.

Der Bereich wird lexikalisch in JS festgelegt, d. H. Es hängt davon ab, wo Sie Ihre Funktionen deklarieren, und Sie können nichts injizieren oder von außen modifizieren.

Ihre beste Wette könnte die with statement sein, obwohl Sie es in Ihre (Pfeil) -Funktion nicht auf der Aufrufseite oder eval setzen müssen.

+0

können, danke @Bergi –