Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   И снова this (https://javascript.ru/forum/misc/36012-i-snova.html)

zilker 28.02.2013 19:25

И снова this
 
Есть у меня место в коде:
...
var element = document.getElement...

function bar(){
    // обращение к this
}

element.addEventListener('click', function(){ obj.foo(bar) }, false);

...

obj.foo()
выступает в роли проксирующей функции и содержит в себе
bar.apply(this, arguments)
Как бы красиво пробросить туда this из обработчика события? Я могу написать
element.addEventListener('click', function(){ obj.foo(this, bar) }, false)
но может можно как-то сделать это красивее, чтобы везде по коду не передавать this первым аргументом? Грубо говоря чтобы method invocation повел себя в отношении this как function invocation?

walik 28.02.2013 20:11

Так попробуйте:
element.addEventListener('click', function(){ obj.foo.apply(this, [bar]); }, false);

danik.js 01.03.2013 00:58

element.addEventListener('click', obj.foo.bind(element, bar));

zilker 01.03.2013 17:26

Да, bind и apply конечное делают то, что нужно. Просто в качестве контекста всегда будет использоваться this, думал что можно это как-то красиво оформить без этих методов.


Часовой пояс GMT +3, время: 03:35.