[закрыто][Javascript] event processing

pilot

HTML элементам можно "добавлять" event handlers. (attachEvent||addEventListener
Хотим чтобы когда event случается выполнялась функция foo в которой вызывается метод bar объекта obj.
Т.е.
 function foo(event){
obj.bar;
}

Хочется чтобы foo не использовала глобальной переменной obj, "узнавая локально" у какого именно объекта надо вызвать метод.
Что пробовал:
 function handler(obj,foo){
this.obj = obj;
this.foo = function(e){
this.obj.bar;
};
}
addEventListener('keypress',handler.foo,false);

(пример для firefox)
такая штука не работает, т.к. this внутри foo указывает на HTML элемент - target для event.
Можно ли в принципе сделать так как мне хочется, и , если можно, то как?

dedwowan

А зачем?
Ты ведь все равно передаешь ссылку на obj, так не проще-ли сделать просто вот так
function handler(obj,foo){
this.foo = function(e){
obj.bar;
};
}
И потом, насколько я помню, для того, чтобы добавить новый метод объекту он должен иметь тип Object, и делается это через метод prototype.

ava3443

насколько я помню, добавить новый метод объекту и повесить на какой-либо event свой handler - сильно разные вещи

dedwowan

В приведенном примере он текущему объекту пытается добавить метод foo

pilot

Спасибо!
Работает. А я не догадался
добавить новый метод объекту он должен иметь тип Object, и делается это через метод prototype
"По-хорошему" - да. Но и так "работает".
2: может, я плохо объяснил, но цель была "использовать локальные переменные в handlere", и способом 'a получаем требуемое.
Оставить комментарий
Имя или ник:
Комментарий: