Как заставить this в обработчике события указывать на объект?
Здравствуйте!
Есть такой код: function Cls() { this.a = 1; document.getElementById("imgId").onclick = this.f1; } Cls.prototype.f1 = function() { alert([this.a, this === window]); } var ob = new Cls(); ob.f1(); // 1, false Для его работы, на странице должен распологаться контрол img с идентификатором imgId. Проблема в том, что в обработчике события this указывает на элемент управления, который вызвал это событие (в данном случае на картинку imgId). А нужно, чтобы this указывал на тот контекст, в котором обработчик события был подключен (т.е. на ob, т.к. подключили обработчик в конструкторе ob). Если я правильно понял философию JavaScript, то это традиционная задача и все с этим сталкиваются. Как обычно решают эту проблему? |
Цитата:
http://javascript.ru/tutorial/object/thiskeyword |
function Cls() { this.a = 1; var obj = this; document.body.onclick = function() { obj.f1(); }; } |
Я использую метод apply.
|
Часовой пояс GMT +3, время: 16:11. |