Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.02.2013, 19:25
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

И снова 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?
Ответить с цитированием
  #2 (permalink)  
Старый 28.02.2013, 20:11
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Так попробуйте:
element.addEventListener('click', function(){ obj.foo.apply(this, [bar]); }, false);
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2013, 00:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

element.addEventListener('click', obj.foo.bind(element, bar));
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2013, 17:26
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова о slideToggle. Артефакты в ие9. Nyamo jQuery 1 27.01.2012 11:17
Снова о функции с переменным кол-во аргументов aleksp Общие вопросы Javascript 15 16.12.2011 03:22
И снова про координаты мыши Jeer jQuery 15 21.03.2011 10:28
И снова о валидации (remote в jQuery.validation v1.7) Sufir jQuery 0 02.03.2011 13:50
IE снова в моде или IE9 == HTML5/CSS3/SVG1.1/DOM monolithed Оффтопик 8 31.10.2010 08:22