2010-07-23 2 views
0

У меня есть следующий файл класса, который я пытаюсь построить. Я хотел бы передать несколько переменных в метод с помощью eventListener, но код, который у меня ниже, не работает, возможно, из-за определения области. Не уверен, что я должен изменить. Любые советы будут высоко ценится.Передача переменных класса в метод класса в прототипе через addEventListener

var MyClass= new Class.create(); 
MyClass.prototype = { 
    initialize: function(id,name,top,left){ 
     try{ 
      this.id = id; 
      this.name = name; 
      this.currentTop = top; 
      this.currentLeft = left; 

      $(id).addEventListener("mousedown",function(event,this.id,this.name){ 
       this.grabOBJ(event,this.id,this.name); 
      },false); 

     } 
     catch(error){alert(error);} 
    }, 
    grabOBJ:function(event,myID,myName){ 
     // do something here with myID and myName 
    } 
}; 

ответ

0

Ваш синтаксис полностью неправильный.

Вместо этого, вы должны сделать отдельную переменную для хранения реальной this, как это:

var MyClass= new Class.create(); 
MyClass.prototype = { 
    initialize: function(id,name,top,left){ 
     try{ 
      this.id = id; 
      this.name = name; 
      this.currentTop = top; 
      this.currentLeft = left; 

      var self = this; 

      $(id).addEventListener("mousedown",function(event){ 
       self.grabOBJ(event); 
      }, false); 

     } 
     catch(error){alert(error);} 
    }, 
    grabOBJ:function(event){ 
     // do something here with this.id and this.name 
    } 
}; 

Поскольку self.grabOBJ нормальный вызов метода, его this будет MyClass экземпляр.

+0

А, да. Я вижу сейчас. Не могу поверить, что я пропустил это. Спасибо за указатель SLaks! –

Смежные вопросы