Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как узнать у какого объекта вызван метод. (https://javascript.ru/forum/events/8420-kak-uznat-u-kakogo-obekta-vyzvan-metod.html)

Scalar 24.03.2010 14:59

Как узнать у какого объекта вызван метод.
 
Допустим, есть некий класс A с методом B
A.prototype=
{
   B:function()
   {
         link2object=this;
   }
}


Логически веб-приложении организовано так - метод B вызывается у объекта при нажатии на ссылку. К ссылке динамически привязывается обработчик:

/*JQuery code*/
$("#link").click(someobject.B);


Проблема, что когда метод назначен обработчиком события нажатия на ссылку - внутри него this-это указатель на DOM-элемент (ссылку), а не на экземпляр класса A.
Как в таком случае узнать к какому экземпляру привязан метод B, т.е. получить ссылку на объект someobject ?

Kolyaj 24.03.2010 15:01

http://javascript.ru/tutorial/object...ord#apply-call

Scalar 24.03.2010 15:11

Не очень понятно при чем тут apply/call. В комментариях к статье, есть похожий вопрос, но решения там нет.

Впрочем меня самого только что осенило - ссылку на объект можно сохранять в свойстве объекта-DOM-элемента-ссылки.

Kolyaj 24.03.2010 15:20

Цитата:

Сообщение от Scalar
Не очень понятно при чем тут apply/call

Вызывать функцию нужно в контексте нужного объекта, а не в функции догадываться, какой бы объект заюзать.

alerion 26.03.2010 10:10

http://api.jquery.com/jQuery.proxy/
Вот вроде то что вам нужно и на jQuery.
В вашем случае:
$("#link").click( jQuery.proxy( someobject, "B" ) ); // this == someobject


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