Добрый день. Нетривиальная задача:
<div id="div-test">
Click me
</div>
пример 1:
function Test(id)
{
this._var = 5;
$(id).click(this.onclick); // вешаем обработчик с помощью jquery
}
Test.prototype.onclick = function()
{
alert(this._var); // 'undefined'
}
var t = new Test("#div-test");
Само собой, при клике на div'е я получаю 'undefined' ибо
this в контексте вызова ссылается на DOM елемент.
Этот
пример 2:
function Test(id)
{
this._var = 5;
var _var = this._var;
var onclick = function()
{
alert(_var); // 5
}
$(id).click(onclick);
}
var t = new Test("#div-test");
...
var t2 = new Test("#some-id");
плох тем, что при создании нового t2 объекта мы получим еще одну копию
var onclick обработчика. Я прав?
Есть ли возможность оставить описание обработчика прототипом и "достучаться" до this._var ?