2016-07-28 4 views
0

Использование заводной, вы можете запустить закрытие как следующее:функция имеет ли стрелка делегат атрибут как 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 внутри закрытия без this (this.methodA()). Это из-за этой инструкции c.delegate=new A(): Поэтому здесь можно вызвать все методы new A().

Мой вопрос:

Как сделать это работает с JavaScript, используя стрелки-функции: либо ES6 или ES7.

Имеет ли функции Arrow что-то вроде 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 –

Смежные вопросы