ошибка this.myfunction is not a function внутри события
Приветствую всех. Суть следующая:
Есть класс объявленный через function(){}, внутри него через this. объявлены функции. В одной из функции я бинжу событие на элемент и вызываю другую функцию при срабатывании. Причем функцию вызываю из этого-же класса через this.myfunction(). Проблема в том, что при срабатывании события, браузер печатает ошибку, что функция не является функцией. При этом если просто вызвать функцию, то все работает.. Код примерно такой: function MyClass(){ this.elem = document.getElementById('someelem'); this.myvar; this.myfunc1 = function(){ this.myfunc2(); // Работает this.elem.addEventListener("mousedown", function(event){ this.myfunc2(); // Не работает. Выдает ошибку "is not a function" this.myvar = 25; // Простая переменная работает }, false); }; this.myfunc2 = function(){ do something... }; }; В гугле пробовал искать, ничего не нашел. Пробовал так же забиндить через "this.elem.onmousedown = function(){this.myfunc2();};", но тоже не помогает( Собственно вопрос в том, как мне забиндить внутреннюю функцию на событие? |
Flakky,
Приведите полностью сообщение об ошибке |
Flakky, в коллбеке addEventListener'a this будет сам элемент. Так попробуй:
this.elem.addEventListener("mousedown", function(event){ this.myfunc2(); this.myvar = 25; }.bind(this), false); Либо в конструкторе сохранить this в переменную и вызывать уже через нее. |
Decode,
Именно поэтому я и просил полный текст сообщения - может, это натолкнет ТС на мысли... |
Decode, Вы правы, так работает. Спасибо.
Единственное, что теперь меня запутало, так это то, что переменная по this. определялась, при том, что, как вы говорите, this будет ссылаться на Window, а не сам класс.. |
Flakky, не на window, на элемент который будет в this.elem.
|
Flakky,
http://javascript.ru/this |
Благодарю, теперь все понятно.
|
Часовой пояс GMT +3, время: 19:00. |