Проблема с вызовом метода
Доброго времени суток друзья.
Проблема вот в чем: Создаю и инициализирую класс, потом пытаюсь вызвать метод этого класса из события. После вызова метода из события пишет что конструктор не инициализирован a= undifined Заранее благодарю всех.
window.onload = init;
function init() {
var m = new MainClass('a');
var d = document.getElementById("menu_01");
d.addEventListener("mouseover", m.method1, false);
}
function MainClass(a) {
this.a = a;
}
MainClass.prototype = {
constructor: MainClass,
method1: function() {
console.log('a=', this.a); // тут проблема a= undifined
}
};
|
У тебя контекст вызова метода будет не объект m, а элемент d (его устанавливает браузер). http://learn.javascript.ru/this
Пиши либо m.method1.bind(m), либо function() { m.method1() } |
window.onload = init;
function init() {
var m = new MainClass('a');
var d = document.getElementById("menu_01");
d.addEventListener("mouseover", m.method1, false);
}
function MainClass(a) {
MainClass.a = a;
}
MainClass.prototype = {
constructor: MainClass,
method1: function() {
console.log('a=', MainClass.a);
}
};
|
_axl, а если появится второй экземпляр класса MainClass?
|
Цитата:
После того как метод вызван мне в этом методе необходимо обработать другое событие и передать ему метод2(закрывает меню) и там уже никак не сделать что бы все работало и вообще какой то замес выходит... Я подозреваю что у нормальных людей все вообще не так должно работать. Суть моей идеи в том что бы сделать класс для анимированного меню. |
Цитата:
|
| Часовой пояс GMT +3, время: 08:42. |