Показать сообщение отдельно
  #7 (permalink)  
Старый 25.07.2012, 19:30
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от bFree
Я пишу var self = this; для того, чтобы можно было вызывать методы этого класса внтури, например, jQuery.each, т.к. там this переопределяется.
Правильно. я о том же и говорил. У вас есть функция, объявленная внутри конструктора, которая должна использовать объект, созданный конструктором. Однако есть метод someEach задаёт общее поведение всех объектов класса, то его нужно записать в прототип, как показали ранее.
foo.prototype.someEach = function() {
   var self=this; 
   jQuery.each(domObjects, function(i, obj) {
      self.someMethod();
   });
};

Вместо var self=this; можно использовать ещё другой подход - с помощью метода Function.prototype.bind.
foo.prototype.someEach = function() {
   jQuery.each(domObjects, function(i, obj) {
      this.someMethod();
   }.bind(this));
};

Последний раз редактировалось oneguy, 26.07.2012 в 23:03.
Ответить с цитированием